BI筆記之--- SSAS部署的幾種方式

SSAS庫的部署有很多種方式,根據環境的不同可以選擇不同的方法,本文列舉幾種最常見的部署方式,以及闡述他們的應用環境。

 

環境約定:SQL Server 2008

示例庫:Adventure Works DW

 

方式一:Visual Studio直接Deploy

這個方法是最直接簡單的方法,大多數我們都是通過這種方法部署到本地,如果需要部署到其它機器上參考下圖:

右鍵點擊SSAS項目然後選擇"屬性",在探出的界面中選擇部署。這是直接通過源文件部署到Server上,需要注意的是我們需要有目標服務器的相關權限。

如果是用Visual Studio在線打開的SSAS庫,是沒有這個配置界面的。

這種方式適合服務器環境比較自由的情況,也是最直接的一種部署方式。先決條件就是目標機器或者服務器上一定要安裝有BIDS(實際就是visual studio的一個shell)。

 

 

方式二:備份,還原

在開發環境把SSAS庫備份成abf文件,方法,右鍵要備份的庫,選擇備份:

然後在目標服務器上還原,同樣,右鍵,還原:

這種方式多用在開發環境和生產環境隔離的情況。

缺點是對於數據源連接的處理,因爲在已經隔離的環境下,數據源服務器的配置肯定是不同的,所以在恢復之後,往往需要用visual studio連接到恢復的SSAS庫上手動的去更改。或者直接在SSMS中去更改。

 

 

方式三:ascmd.exe

以命令行的方式來部署。這個程序可以在類似下面的位置找到:

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

這下面是它的源文件,給出源文件的目的在於,有可能你的開發環境是32位換幾個,而生產環境是64位環境,那麼你就需要32位和64位版本的這個ascmd文件。我們只需要在編譯的時候指定就可以:

這種方式部署,需要將已經部署好的SSAS庫生成爲一個XMLA腳本,它是一個XML格式的文件。

以下是具體的方法:

注:生成的時間可能會比較長,取決於SSAS DB的複雜程度。(參考:Adventure Works的庫會超過五分鐘)

如果需要覆蓋的方式部署的話,那麼需要在根節點加入一個屬性:AllowOverwrite="true"

需要關注的一個地方就是,需要更改Data Source,這個可以在XMLA文件中檢索到:

由於部署的目標服務器會跟本地的情況不同,所以這裏留一個佔位符。方法是把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。

要點是要引用如下的一個命名空間:

核心代碼如下:

//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"

部署成功的話在結果集裏是沒有任何消息的。

這種方法適用於自己系統的集成開發,相對自由靈活一些。

 

 

總結:

以上列舉了SSAS庫部署最常用的幾種方法,各種方法的複雜程度不一,適應的場景也各不相同,項目中可以根據實際情況來選擇不同的方案。

[2013-02-14追加]

ascmd的下載地址已經更新:

http://sqlsrvanalysi***vcs.codeplex.com/releases/view/22769

[2011-03-29追加]

如何找到ascmd

下載網址:

http://sqlserversamples.codeplex.com/releases/view/45923

在下載的samples裏,找到:

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

裏面是源文件,自己根據系統環境(x86還是x64)編譯一下就可以使用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章