SQL Server コマンドレットの使用

Windows PowerShell コマンドレットは、単一の機能を実現するコマンドで、通常は Get-HelpSet-MachineName のように動詞と名詞を組み合わせた名前付け規則に従います。SQL Server 固有のコマンドレットは、Windows PowerShell 用 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 では、Transact-SQL または XQuery ステートメントを含む sqlcmd スクリプトやコマンドの実行をサポートします。sqlcmd の入力を、文字列の入力パラメーターとして、または開くスクリプト ファイルの名前として受け取ることができます。詳細については、「Invoke-Sqlcmd コマンドレットの使用」を参照してください。

Invoke-PolicyEvaluation

Invoke-PolicyEvaluation は、SQL Server オブジェクトの対象セットがポリシー ベースの管理ポリシーに定義されている条件に準拠しているかどうかを報告します。必要に応じて、このコマンドレットを使用して、ポリシー条件に準拠していない対象オブジェクト内の設定可能なオプションを再構成することができます。詳細については、「Invoke-PolicyEvaluation コマンドレットの使用」を参照してください。

SQL Server 識別子のエンコードとデコード

識別子とは、SQL Server オブジェクトの名前です。SQL Server 識別子では、Windows PowerShell 言語よりも広範な文字がサポートされます。データベース エンジンの角かっこや引用符で囲まれた識別子には、名前に使用される文字の制限はほとんどありません。角かっこや引用符で囲まれた識別子で使用される一部の文字は Windows PowerShell のエスケープ文字 (`) でエスケープできず、それらの文字が使用されていると、SQL Server プロバイダーを使用するときに問題が発生することがあります。

Encode-SqlName コマンドレットは、SQL Server 識別子を入力として受け取り、Windows PowerShell 言語でサポートされないすべての文字を 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 (Uniform Resource Name) が作成されます。各 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 はそれらの文字を 16 進数表記でエンコードします。たとえば、"My:Table" は "My%3ATable" として返されます。

このコマンドレットの使用例については、Windows PowerShell で Get-Help Convert-UrnToPath -Examples を実行してください。

部分的なパラメーター名

コマンドレット パラメーターの完全な名前を指定する必要はありません。そのコマンドレットでサポートされている他のパラメーターと区別するのに足りる名前の一部のみを指定するだけでかまいません。たとえば、次の例は、Invoke-Sqlcmd -QueryTimeout パラメーターを指定する 3 つの方法を示します。

Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTime 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryT 3