共用方式為


使用 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

此範例會巡覽至 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