《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.13 创建视图...
本節書摘來自異步社區出版社《PowerShell V3—SQL Server 2012數據庫自動化運維權威指南》一書中的第2章,第2.13節,作者:【加拿大】Donabel Santos,更多章節內容可以訪問云棲社區“異步社區”公眾號查看。
2.13 創建視圖
本方案展示了如何用PowerShell和SMO創建視圖。
2.13.1 準備
我們將會使用AdventureWorks2008R2數據庫的Person.Person表。
為了知道我們將會創建什么,我們給出了等價的T-SQL。
CREATE VIEW dbo.vwVCPerson AS SELECT TOP 100BusinessEntityID,LastName,FirstName FROM Person.Person WHERE PersonType = 'IN' ORDER BYLastName GO2.13.2 如何做…
1.通過“Start | Accessories | Windows PowerShell | Windows PowerShell ISE”打開PowerShell控制臺。
2.導入SQLPS模塊,創建一個新的SMO服務器對象。
#import SQL Server module Import-Module SQLPS –DisableNameChecking #replace this with your instance name $instanceName = "KERRIGAN" $server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server -ArgumentList $instanceName3.添加下面的腳本并運行。
$dbName = "AdventureWorks2008R2" $db = $server.Databases[$dbName] $viewName = "vwVCPerson" $view = $db.Views[$viewName] #if view exists, drop it if ($view) {$view.Drop() } $view = New-Object -TypeName Microsoft.SqlServer.Management.SMO.View –ArgumentList $db, $viewName, "dbo" #TextMode = false meaning we are not #going to explicitly write the CREATE VIEW header $view.TextMode = $false $view.TextBody = @" SELECT TOP 100BusinessEntityID,LastName,FirstName FROM Person.Person WHERE PersonType = 'IN' ORDER BYLastName "@ $view.Create()4.通過在PowerShell中運行下面的代碼測試視圖。
$result = Invoke-Sqlcmd ` -Query "SELECT * FROM vwVCPerson" ` -ServerInstance "$instanceName" ` -Database $dbName $result | Format-Table –AutoSize5.檢查是否已創建視圖。打開SSMS,展開AdventureWorks2008R2數據庫的Views。
2.13.3 如何實現…
為了使用SMO和PowerShell創建視圖,你首先需要創建一個SMO View變量,它需要3個參數:database handle、view name和schema。
$view = New-Object -TypeName Microsoft.SqlServer.Management.SMO.View -ArgumentList $db, $viewName, "dbo"可選的設置視圖的所有者。
$view.Owner = "QUERYWORKS\aterra"視圖創建的核心是視圖的定義。我們將TextMode屬性設置為true或false。
$view.TextMode = $false $view.TextBody = @" SELECT TOP 100BusinessEntityID,LastName,FirstName FROM Person.Person WHERE PersonType = 'IN' ORDER BYLastName "@如果將TextMode屬性設置為false,意味著讓SMO構造視圖頭部。
$view.TextMode = $false如果將TextMode屬性設置為true,意味著你需要定義視圖的TextHeader屬性。
$view.TextMode = $true $view.TextHeader = "CREATE VIEW dbo.vwVCPerson AS "當都準備好后,調用視圖的Create方法。
$view.Create()2.13.4 更多…
當創建數據庫對象如視圖、存儲過程或者函數,你需要為對象的定義寫代碼。盡管技術上允許你將代碼放在一行,但是將它們放在多行格式更具可讀性。
為了嵌入代碼塊到PowerShell,你需要創建一個字符串。該字符串以@”開始并什么都不跟,并且以”@結束,且必須是該行開頭的前兩個字符。
$view.TextBody = @" SELECT TOP 100BusinessEntityID,LastName,FirstName FROM Person.Person WHERE PersonType = 'IN' ORDER BYLastName "@這個構造可能讓你會向導C類型注釋,以/開頭以/結束,只是使用不同的字符。
總結
以上是生活随笔為你收集整理的《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.13 创建视图...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hihocoder #1631 : Ca
- 下一篇: linux cmake编译源码,linu