使用 SQL Server PowerShell 路徑
在流覽至 Database Engine 提供者路徑中的節點之後,您可以使用與節點相關聯的 Database Engine 管理物件的方法和屬性來執行工作或擷取資訊。
注意
有兩個 SQL Server PowerShell 模組;SqlServer 和 SQLPS。
SqlServer 模組是要使用的目前 PowerShell 模組。
SQLPS 模組
SqlServer 模組包含 SQLPS 中更新的 Cmdlet 版本,並包含新的 Cmdlet 以支援最新的 SQL 功能。
從 PowerShell 資源庫安裝 SqlServer 模組。
如需詳細資訊,請流覽 SQL Server PowerShell。
瀏覽至 Database Engine 提供者路徑中的節點之後,您可以執行兩種類型的動作:
您可以執行在節點上運作的 Windows PowerShell Cmdlet,例如 Rename-Item。
您可以從相關聯的 SQL Server 管理物件模型呼叫方法,例如 SMO。 例如,如果您巡覽至路徑中的 [資料庫] 節點,您可以使用
<xref:Microsoft.SqlServer.Management.Smo.Database>
類別的方法和屬性。
SQL Server 提供者可用來管理 Database Engine 實例中的物件。 它不會用來處理資料庫中的數據。 如果您已瀏覽至資料表或檢視表,就無法使用提供者來選取、插入、更新或刪除資料。 使用 Invoke-Sqlcmd Cmdlet,從 Windows PowerShell 環境中查詢或變更數據表和檢視中的數據。 如需詳細資訊,請參閱 Invoke-Sqlcmd。
列出方法和屬性
列出方法和屬性
若要檢視特定物件或物件類別可用的方法和屬性,請使用 get-Member Cmdlet
範例:列出方法和屬性
本範例會將 Windows PowerShell 變數設定為 SMO <xref:Microsoft.SqlServer.Management.Smo.Database>
類別,並列出方法和屬性:
$MyDBVar = New-Object Microsoft.SqlServer.Management.SMO.Database
$MyDBVar | Get-Member -Type Methods
$MyDBVar | Get-Member -Type Properties
您也可以使用 Get-Member 來列出與 Windows PowerShell 路徑結束節點相關聯的方法和屬性。
此範例會巡覽至 SQLSERVER 中的 [資料庫] 節點:路徑,並列出集合屬性:
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases
Get-Item . | Get-Member -Type Properties
此範例會巡覽至 SQLSERVER 中的 AdventureWorks2022
節點:路徑,並列出物件屬性:
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2022
Get-Item . | Get-Member -Type Properties
使用方法和屬性
使用 SMO 方法和屬性
若要從 Database Engine 提供者路徑對物件執行工作,您可以使用 SMO 方法和屬性。
範例:使用方法和屬性
此範例會使用 SMO Schema 屬性,從 AdventureWorks2022
中的 Sales 架構取得資料表清單:
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2022\Tables
Get-ChildItem | where {$_.Schema -eq "Sales"}
此範例使用 SMO Script 方法來產生腳本,其中包含您必須在 AdventureWorks2022
中重新建立檢視的 CREATE VIEW 語句:
Remove-Item C:\PowerShell\CreateViews.sql
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2022\Views
foreach ($Item in Get-ChildItem) { $Item.Script() | Out-File -Filepath C:\PowerShell\CreateViews.sql -append }
此範例會使用 SMO Create 方法來建立資料庫,然後使用 State 屬性來顯示資料庫是否存在:
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases
$MyDBVar = New-Object Microsoft.SqlServer.Management.SMO.Database
$MyDBVar.Parent = (Get-Item ..)
$MyDBVar.Name = "NewDB"
$MyDBVar.Create()
$MyDBVar.State