使用 SQL Server PowerShell 路徑
適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)
當您瀏覽至資料庫引擎提供者路徑中的節點之後,即可使用與該節點建立關聯的資料庫引擎管理物件方法與屬性,來執行工作或擷取資訊。
注意
有兩個 SQL Server PowerShell 模組:SqlServer 和 SQLPS。
SqlServer 模組是要使用的最新 PowerShell 模組。
SQLPS 模組隨附於 SQL Server 安裝 (用於回溯相容性),但不再更新。
SqlServer 模組包含 SQLPS 中 Cmdlet 的更新版本,且加入新的 Cmdlet 以支援 SQL 最新功能。
從 PowerShell 資源庫安裝 SqlServer 模組。
如需詳細資訊,請參閱 SQL Server PowerShell。
當您瀏覽至資料庫引擎提供者路徑中的節點之後,即可執行兩種動作:
您可以執行在節點上運作的 Windows PowerShell Cmdlet,例如 Rename-Item。
您可以從相關聯的 SQL Server 管理物件模型 (如 SMO) 呼叫方法。 例如,如果您導覽至路徑中的資料庫節點,您可以使用 Database 類別的方法和屬性。
SQL Server 提供者可用於管理資料庫引擎執行個體中的物件。 而不是用來處理資料庫中的資料。 如果您導覽至資料表或檢視表,即無法使用此提供者選取、插入、更新或刪除資料。 使用 Invoke-Sqlcmd Cmdlet 可從 Windows PowerShell 環境中,查詢或變更資料表與檢視中的資料。 如需詳細資訊,請參閱 Invoke-Sqlcmd Cmdlet。
列出方法與屬性
列出方法與屬性
請使用 Get-Member Cmdlet,以檢視特定物件或物件類別適用的方法或屬性。
範例:列出方法與屬性
此範例將 Windows PowerShell 變數設定為 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: 路徑中的 Databases 節點,並列出集合屬性:
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 方法與屬性
若要從資料庫引擎提供者路徑對物件執行工作,您可以使用 SMO 方法與屬性。
範例:使用方法與屬性
此範例會使用 SMO 結構描述 屬性來取得 AdventureWorks2022
中 Sales 結構描述內的資料表清單:
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2022\Tables
Get-ChildItem | where {$_.Schema -eq "Sales"}
此範例會使用 SMO 指令碼方法來產生包含 CREATE VIEW 陳述式的指令碼,您必須在 AdventureWorks2022
中重新建立檢視表:
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
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應