共用方式為


使用 SQL Server PowerShell 路徑

在流覽至 Database Engine 提供者路徑中的節點之後,您可以使用與節點相關聯的 Database Engine 管理物件的方法和屬性來執行工作或擷取資訊。

注意

有兩個 SQL Server PowerShell 模組; SqlServerSQLPS

SqlServer 模組是要使用的目前 PowerShell 模組。

SQLPS 模組隨附於 SQL Server 安裝中(為了回溯相容性),但不再更新。

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

此範例會巡覽至 AdventureWorks2022 SQLSERVER 中的節點:路徑,並列出物件屬性:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2022
Get-Item . | Get-Member -Type Properties

使用方法和屬性

使用 SMO 方法和屬性

若要從 Database Engine 提供者路徑對物件執行工作,您可以使用 SMO 方法和屬性。

範例:使用方法和屬性

此範例會使用 SMO 架構 屬性,從中的 AdventureWorks2022Sales 架構取得資料表清單:

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