如何將 PowerShell 整合進 SQL Server 2005/2008 的管理工作

SQL Server 2008 後提供了 SQLPS.exe(存取時 SQL Server,與 2005 版相容),執行後將整合到 PowerShell 內,Management Studio 2008 同樣可以叫起。

image

執行類似如下的工作,但…有何用處呢?疑惑

http://msmvps.com/blogs/robfarley/archive/2008/03/04/sql-server-2008-powershell-snapin.aspx 有不錯的說明微笑

image

Servers.txt 文字檔的內容如下:

tfsrtm
tfsrtm2
tfsrtm2Katmai

透過 PowerShell 統一對多個 SQL Server 執行個體查詢 Blocked 的狀況:

image

可以將上述的語法編寫成 PowerShell 可以使用的批次檔(.ps1),但因為安全疑慮,需要簽章。簡單的方式是設定 PowerShell 不需要任何的安全限制:

在 Console 執行 PowerShell.exe 後,執行如下的語法:
Set-ExecutionPolicy Unrestricted

接著設定 PowerShell.exe 可以直接執行 Script 檔案內容,可以在 Console 設定:
ftype Microsoft.PowerShellScript.1="C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -command "&{%1}"

或是透過檔案總管設定:

image

最後以一般文字存檔,例如 test.ps1,內容如下:

Add-PSSnapin SqlServerCmdletSnapin100
Add-PSSnapin SqlServerProviderSnapin100
gc c:Servers.txt | % { Invoke-SQLCmd -Server $_ -Query "select @@servername as ‘Server’, count(*) as ‘Blocked’ from master.dbo.sysprocesses where blocked <> 0" }

其中 Add-PSSnapin 指令是要求 PowerShell 載入 SQL Server 2008 所提供的 Snapin,這才能解釋 Invoke-SQLCmd。而後就可以簡單地在檔案總管雙擊 ps1 批次檔,或透過  Console 直接敲入 ps1 檔名

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: