ssas脚本组织程序_BI笔记之--- SSAS部署的几种方式

SSAS库的部署有很多种方式,根据环境的不同可以选择不同的方法,本文列举几种最常见的部署方式,以及阐述他们的应用环境。

环境约定:SQL Server 2008

示例库:Adventure Works DW

方式一:Visual Studio直接Deploy

这个方法是最直接简单的方法,大多数我们都是通过这种方法部署到本地,如果需要部署到其它机器上参考下图:

d6cd3c896e7820a4ad0392d4aa379e96.png

右键点击SSAS项目然后选择"属性",在探出的界面中选择部署。这是直接通过源文件部署到Server上,需要注意的是我们需要有目标服务器的相关权限。

如果是用Visual Studio在线打开的SSAS库,是没有这个配置界面的。

这种方式适合服务器环境比较自由的情况,也是最直接的一种部署方式。先决条件就是目标机器或者服务器上一定要安装有BIDS(实际就是visual studio的一个shell)。

方式二:备份,还原

在开发环境把SSAS库备份成abf文件,方法,右键要备份的库,选择备份:

eacffdea31d0a98514e4a45ad8a16b2d.png

然后在目标服务器上还原,同样,右键,还原:

d3c01eb2e60e22ee6bb752f58c90532d.png

这种方式多用在开发环境和生产环境隔离的情况。

缺点是对于数据源连接的处理,因为在已经隔离的环境下,数据源服务器的配置肯定是不同的,所以在恢复之后,往往需要用visual studio连接到恢复的SSAS库上手动的去更改。或者直接在SSMS中去更改。

方式三:ascmd.exe

以命令行的方式来部署。这个程序可以在类似下面的位置找到:

C:\Program Files\Microsoft SQL Server\100\Samples\Analysis Services\Administrator\ascmd\CS

这下面是它的源文件,给出源文件的目的在于,有可能你的开发环境是32位换几个,而生产环境是64位环境,那么你就需要32位和64位版本的这个ascmd文件。我们只需要在编译的时候指定就可以:

712e4391453bb16e7502bbeaff1c19a7.png

这种方式部署,需要将已经部署好的SSAS库生成为一个XMLA脚本,它是一个XML格式的文件。

以下是具体的方法:

4dadf47c58f5c6752dad88923f3548fc.png

注:生成的时间可能会比较长,取决于SSAS DB的复杂程度。(参考:Adventure Works的库会超过五分钟)

52921ddbf983df7cf219fd2c4518cdce.png

如果需要覆盖的方式部署的话,那么需要在根节点加入一个属性:AllowOverwrite="true"

e9e322590877c89d962053b8aa36b001.png

需要关注的一个地方就是,需要更改Data Source,这个可以在XMLA文件中检索到:

0796ca4c176982ee60c32fc2aed14719.png

由于部署的目标服务器会跟本地的情况不同,所以这里留一个占位符。方法是把Localhost(或者你相应Data Source位置的配置)替换成:$(DWServer)

然后,打开一个命令行,cd定位到ascmd.exe所在的目录,然后敲如下命令:

ASCMD -S xxx.xxx.xxx.xxx -v DWServer=xxx.xxx.xxx.xxx -i AdventureWorks.xmla

以上是假定ascmd和保存下来的XMLA在同一目录,如果不在一起,那么更改-i后面的值就可以。

其中:

-S是要部署的目标服务器地址,不如localhost或者172.5.3.123

-v就是参数的替换,也就是之前替换的$DWServer,也就是数据源所在的位置。

另如果是在64位环境使用,记得要用64位版本去编译ascmd.exe。

这种方法的适用面比较广泛,因为大多数BI项目的开发环境和生产环境都是隔离的,而且都有各自的数据仓库。在部署的过程中,完全可以写一个带参数的批处理脚本,这样会使部署更灵活一些。

方式四:在程序中通过AMO。

要点是要引用如下的一个命名空间:

a3ce432c38e4292aea900550e1cd992c.png

核心代码如下:

//connect ssas

Server _server = new Server();

_server.Connect("localhost");

//load xmla content to string.

StreamReader sr = new StreamReader("XMLAQuery.xmla", System.Text.Encoding.Default);

string strXMLA = sr.ReadToEnd();

sr.Close();

//execute

XmlaResultCollection _result = _server.Execute(strXMLA);

foreach (XmlaResult r in _result)

{

foreach (XmlaMessage m in r.Messages)

{

Console.WriteLine(m.Description);

}

}

需要注意的是如果部署出现问题,这里是不会抛异常的,所以部署的结果只能通过调用Server实例的Execute方法的返回结果来看到,请留意上面代码的foreach部分。

以下是经常会遇到的错误之一,提示SSAS库已经存在,原因是没有加入上面提到的AllowOverwrite="true"

b783bb886c6bb7671cc5dba8ed16f35b.png

部署成功的话在结果集里是没有任何消息的。

这种方法适用于自己系统的集成开发,相对自由灵活一些。

总结:

以上列举了SSAS库部署最常用的几种方法,各种方法的复杂程度不一,适应的场景也各不相同,项目中可以根据实际情况来选择不同的方案。

[2013-02-14追加]

ascmd的下载地址已经更新:

[2011-03-29追加]

如何找到ascmd

下载网址:

在下载的samples里,找到:

SQL2008R2.All_Product_Samples_Without_DBs\Samples\Analysis Services\Administrator\ascmd

里面是源文件,自己根据系统环境(x86还是x64)编译一下就可以使用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值