使用 SQL Server 指令程式
Windows PowerShell 指令程式是單一功能的命令,通常具有動詞-名詞命名慣例,例如 Get-Help 或 Set-MachineName。適用於 Windows PowerShell 的 SQL Server 提供者會提供 SQL Server 特有的指令程式。
SQL Server 指令程式
SQL Server 2008 會實作少數的 SQL Server 指令程式。
在 Windows PowerShell 環境中,Get-Help 指令程式會針對每一個指令程式提供說明資訊。Get-Help 會傳回類似語法、參數定義、輸入和輸出類型以及指令程式所執行之動作描述等資訊。
這些範例會針對 SQL ServerEncode-SqlName 指令程式傳回基本說明、完整說明、語法圖、參數和範例:
get-help "Encode-SqlName"
get-help "Encode-SqlName" -Full
get-help "Encode-SqlName" -Syntax
get-help "Encode-SqlName" -Parameter *
get-help "Encode-SqlName" -Examples
Invoke-Sqlcmd
Invoke-Sqlcmd 支援 sqlcmd 指令碼的執行或是包含 Transact-SQL 或 XQuery 陳述式的命令。它可接受 sqlcmd 輸入當做字元字串輸入參數或是要開啟的指令碼檔案名稱。如需詳細資訊,請參閱<使用 Invoke-Sqlcmd 指令程式>。
Invoke-PolicyEvaluation
Invoke-PolicyEvaluation 會報告 SQL Server 物件的目標集是否符合在以原則為基礎的管理原則中定義的條件。您可以選擇性地使用此指令程式,在目標物件中重新設定任何不符合原則條件的可設定選項。如需詳細資訊,請參閱<使用 Invoke-PolicyEvaluation 指令程式>。
編碼及解碼 SQL Server 識別碼
識別碼是 SQL Server 物件的名稱。SQL Server 識別碼支援的字元範圍要比 Windows PowerShell 語言更廣。Database Engine 括號識別碼或引號識別碼對於名稱中所用的字元有很少的限制。用於括號識別碼或引號識別碼的某些字元不能使用 Windows PowerShell ` 逸出字元來逸出,而且當使用 SQL Server 提供者時可能會發生問題。
Encode-SqlName 指令程式會將 SQL Server 識別碼當做輸入,並重新格式化 Windows PowerShell 語言不支援的所有字元,並使用可在 Windows PowerShell 中運作的表示法。Decode-SqlName 指令程式會將編碼的 SQL Server 識別碼當做輸入,並傳回原始識別碼。例如:
Encode-SqlName "Table:Test" 會傳回 "Table%3ATest" 字串。
Decode-SqlName "Table%3ATest" 會傳回 "Table:Test"。
如需詳細資訊,請參閱<在 PowerShell 中使用 SQL Server 識別碼>。
將 URN 轉換成路徑
SQL Server 管理物件模型 (SMO) 會針對它的物件建立統一資源名稱 (URN)。每一個 URN 都有與物件之路徑相同的資訊,但是格式會不同。例如,以下為資料表的路徑:
SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2008R2\Tables\Person.Address
以下是相同物件的 URN:
Server[@Name='MyComputer']\Database[@Name='AdventureWorks2008R2']\Table[@Name='Address' and @Schema='Person']
Convert-UrnToPath 指令程式會將 SMO URN 字串轉換成 Windows PowerShell 路徑。如果節點名稱包含 Windows PowerShell 路徑名稱所不支援的擴充字元,Convert-UrnToPath 會在其十六進位表示法中編碼這些字元。例如,"My:Table" 會以 "My%3ATable" 的形式傳回。
在 Windows PowerShell 中,針對使用指令程式的範例執行 Get-Help Convert-UrnToPath -Examples。
部分參數名稱
您不需要指定指令程式參數的完整名稱。您只要指定足夠的名稱,就可以唯一地分隔它與指令程式所支援的其他參數。例如,下列範例將示範三種指定 Invoke-Sqlcmd -QueryTimeout 參數的方式:
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTime 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryT 3