[譯]SSAS下玩轉PowerShell(三)

哥本哈士奇(aspnetx)發表於2014-09-01

第一篇中簡單介紹了PowerShell,包含基本的一些命令,以及如何開啟PowerShell,並且導航到SSAS物件。第二篇中學習瞭如何使用變數根據當前日期建立SSAS備份,以及如何執行MDX和XMLA指令碼。

 

原文地址:

http://www.mssqltips.com/sqlservertip/2980/using-powershell-for-ssas-to-check-service-status-and-database-availability/

 

 

在這一篇中,主要介紹以下幾個話題:

- 使用PowerShell命令驗證SSAS服務的狀態

- 如果SSAS服務當掉自動傳送訊息

- 驗證SSAS資料庫的硬碟使用情況

- 每小時執行指令碼驗證資料庫的狀態

 

環境:

Adventureworks微軟示例專案。

SQL Server 2008之後的版本。

 

開始:

1. 首先使用PowerShell獲取Windows Services狀態。

get-service

這個命令返回當前的Windows Services以及其狀態:

2. 此篇中我們關注的是SSAS服務,所以命令將會如下所示:

get-service | select status, name | Where-Object {$_.Name -like "*MSSQLServerOLAP*"}

這條命令顯示名稱中包含"MSSQLServerOLAP"的服務名稱以及服務狀態,可以看到服務當前的狀態是開啟還是停止。

3. 接下來將實現如果服務停止,自動傳送資訊。

$servicestatus=get-service | select status,name | Where-Object {$_.Name -like "*MSSQLServerOLAP*"}

$Message="The SSAS Service is down"

if($servicestatus.status -eq "Stopped"){

echo $Message

}

這條命令如果監測到SSAS服務停止,將顯示訊息"The SSAS Service is down"。

4. 以下命令顯示磁碟的剩餘空間。

$driveinformation=gwmi win32_volume -Filter 'drivetype = 3' | select driveletter, label, @{LABEL='GBfreespace';EXPRESSION={$_.freespace/1GB} }

這條命令以GB為單位顯示每個磁碟的剩餘空間,當我們需要知道SSAS是否有足夠的剩餘空間的時候,這條命令很有用。

5. 為了驗證SSAS下Cube的狀態可以每五分鐘傳送一條MDX語句。在此篇我們將建立一條簡單的MDX指令碼然後以每小時的方式執行以此驗證Cube是處於線上狀態。

6. 開啟SSMS。

7. 連線到SSAS服務並且瀏覽Adentureworks多維資料集。

8. 拖拽Internet Gross Profit到透視表區域,然後切換到MDX檢視。

9. 自動生成的查詢如下所示:

SELECT NON EMPTY { [Measures].[Internet Gross Profit] } ON COLUMNS FROM [Adventure Works] CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

10. 儲存指令碼為Adventure.mdx檔案。

11. 接下來使用PowerShell指令碼來呼叫這條查詢。如果沒有結果或者一條沒有處理的錯誤訊息返回,自動返回連線錯誤的資訊。

$result=Invoke-ASCmd -Database "Adventureworks" -InputFile:"c:\scripts\Adventure.mdx"

$Message="Adventureworks had a connection error"

if ((!$result) -or ($resultado -like "*either does not exist or has not been processed*")){$message}

12. 為了讓PowerShell指令碼週期的執行,在SSMS下建立一個作業:

13. 給作業取一個名字,然後建立一個新步驟。

14. 指定一個步驟名稱,在Type下選擇PowerShell然後在命令區貼上第11步的指令碼,然後點選OK。

然後選擇Schedules頁面,點選New按鈕。

輸入schedule資訊,在這裡我們設定為每小時執行來驗證資料庫的狀態。

 

至此,一個每小時驗證SSAS資料庫狀態的作業建立完成。希望大家喜歡這篇。

 

相關內容:

PowerShell建立自動化任務是一個不錯的工具,更多資訊請參考以下連結:

http://technet.microsoft.com/en-us/library/hh849804.aspx

http://technet.microsoft.com/en-us/library/ee177028.aspx

http://blogs.technet.com/b/flaphead/archive/2006/09/12/455555.aspx

在MSSQLTips.com上閱讀更多關於PowerShell的內容。

http://www.mssqltips.com/sql-server-tip-category/81/powershell/

相關文章