[譯]SSAS下玩轉PowerShell

哥本哈士奇(aspnetx)發表於2014-05-24

操作SSAS資料庫的方法有很多,是否有一種可以方法可以通過指令碼自動去做這些事呢,比如處理分割槽,建立備份以及監視SSAS的執行狀況。

 

原文地址:

http://www.mssqltips.com/sqlservertip/2937/using-powershell-for-sql-server-analysis-services-tasks--part-1/

 

 

PowerShell作為命令列工具來自動化處理SSAS任務就是一個不錯的選擇。因為是圍繞SSAS處理任務的話題,所以閱讀此篇需要具備一些SSAS的基礎知識,這裡我們使用SQL Server 2012。

此篇將介紹如下內容:

  • 啟動PowerShell
  • 通過PowerShell導航並且檢視SSAS物件
  • 通過PowerShell執行些基礎指令
  • 處理SSAS的一個分割槽

 

本文使用SQL Server 2012的Adventureworks示例資料庫,有可以在這裡下載到這個示例庫:

http://msftdbprodsamples.codeplex.com/releases/view/55330

 

開始

  1. 在開始選單下,點選Run選項。或者Windows鍵+r。

  2. 在執行窗體中輸入sqlps啟動SQL Server下的PowerShell。

  3. 輸入GCI命令檢視PowerShell下的物件列表。

    GCI命令的含義是獲取所有子物件,跟DOS時代下的dir命令很像,所以這裡你也可以同樣可以使用LS或者DIR獲取同樣的結果。從結果中可以看到,SQL Server PowerShell可以讓你自動以自動化的方式去處理SQL Server資料引擎的任務,策略,資料集,SQL Server整合服務任務以及SQL Server分析服務任務。此篇我們將集中SSAS任務。

  4. 使用如下命令進入到分析服務目錄中。

    CD sqlas

    這裡的CD命令跟DOS下的相同。

  5. 關於GCI的更過資訊,可以輸入如下命令獲取幫助:

    get-help gci –detailed

 

分割槽操作

SSAS多維資料庫下包含Cubes立方體,Cubes下又包含度量值以及度量值分割槽。下圖展示了其層次結構。

接下來使用CD命令移動到分割槽目錄下。

cd servername\DEFAULT\databases\AdventureWorksDW2012Multidimensional-EE\cubes\Adventure Works\MeasureGroups\Internet Orders\Partitions

  • Servername就是Windows Server的名稱。
  • Default是SSAS服務例項的名稱。
  • AdventureWorksDW2012Multidimensional-EE是資料庫名稱。
  • AdventureWork是立方體名稱。
  • Internet Orders是度量值組名稱。
  • 最後我們就可以獲取到其下的分割槽資訊。當一個分析服務資料庫太大的時候我們會考慮將其拆分成不同的分割槽:

 

使用分割槽對資料進行拆分,可以通過並行的方法提高處理的速度,並且對於相關的查詢效能也會有提高。

接下來通過GCI命令列出所有的分割槽資訊.

我們可以看到分割槽名稱,估計行數以及處理的模式。在Adventureworks立方體中分割槽是按照年來進行拆分的。每個分割槽的行數預設是沒有被計算的所以看到的是0。處理模式是分割槽的處理方式,Regular模式意味著資料和聚合都會被處理,另外一種Lazy聚合意味著資料首先會被處理,聚合在隨後的後臺程式建立。這個設定對資料以及降低索引建立是非常有幫助的,因為索引的建立會有額外的效能開銷。

可以通過Get-member的方法獲取分割槽下的所有成員。

LS | Get-Member

Get-Member命令用於列出一個物件支援的屬性和方法。在這裡就是列出分割槽下所支援的屬性和方法。

比如可以看到分割槽名,LastProcessed時間以及分割槽的EstimatedSize:

LS| SELECT NAME, LASTPROCESSED, ESTIMATEDSIZE

如果要處理一個指定的分割槽那麼就可以使用下面的命令:

Invoke-ProcessPartition -Name "Internet_Orders_2006" -MeasureGroupname "Internet Orders" -CubeName "Adventure Works" -database "AdventureWorksDW2012Multidimensional-EE" -ProcessType "ProcessFull"

這個命令會處理Adventureworks下Internet Orders度量值組名為"Internet_Order_2006"的分割槽,並且是以全量的方式來處理。

在SQL Server 2012 SP1的這個版本,當我們執行完這個命令然後再執行"LS|SELECT NAME, LASTPROCESSED, ESTIMATEDSIZE",預設資訊是沒有更新的。需要把PowerShell關閉掉然後再重新開啟再執行這個命令才可以看到更新後的資訊。

 

備份SSAS資料庫

執行下面的命令可以實現Adventureworks的備份:

backup-asdatabase d:\awdb-20110930.abf "AdventureWorksDW2012Multidimensional-EE" -AllowOverwrite –ApplyCompression

這個命令會備份AdventureWorksDW2012Multidimensional-EE資料庫,備份檔名為awdb-20110930.abf,並且儲存在d盤根目錄下。這個命令同樣也會覆蓋已經存在的同名備份檔案。

此篇演示瞭如何啟動PowerShell,如何顯示物件下的屬性,如何處理一個分割槽以及最後如何備份一個資料庫。下一篇會介紹PowerShell在SSAS下的更多操作。

 

 

譯註:

SSAS的物件的層次結構比較複雜,具體該如何進行導航或者在某些物件下能做什麼,需要對SSAS資料庫的基本結構有一個瞭解。

PowerShell操作SSAS的方式也是通過AMO的方式,方便通過基於.net的方式來進行操作。

相關文章