Invoke-Sqlcmd

SQL Server SQLCMD ユーティリティでサポートされているステートメントを含むスクリプトを実行します。

構文

Invoke-Sqlcmd
      [-ServerInstance <PSObject>]
      [-Database <String>]
      [-EncryptConnection]
      [-Username <String>]
      [-Password <String>]
      [[-Query] <String>]
      [-QueryTimeout <Int32>]
      [-ConnectionTimeout <Int32>]
      [-ErrorLevel <Int32>]
      [-SeverityLevel <Int32>]
      [-MaxCharLength <Int32>]
      [-MaxBinaryLength <Int32>]
      [-AbortOnError]
      [-DedicatedAdministratorConnection]
      [-DisableVariables]
      [-DisableCommands]
      [-HostName <String>]
      [-NewPassword <String>]
      [-Variable <String[]>]
      [-InputFile <String>]
      [-OutputSqlErrors <Boolean>]
      [-IncludeSqlUserErrors]
      [-SuppressProviderContextWarning]
      [-IgnoreProviderContext]
      [<CommonParameters>]

説明

Invoke-Sqlcmd コマンドレットは、SQL Server SQLCMD ユーティリティでサポートされている言語とコマンドを含むスクリプトを実行します。 サポートされるコマンドは、Transact-SQL ステートメントと、データベース エンジンでサポートされている XQuery 構文のサブセットです。 このコマンドレットは、GO や QUIT など、SQLCMD でネイティブにサポートされているコマンドの多くも受け入れます。 このコマンドレットは、SQLCMDUSER などの SQLCMD スクリプト変数も受け入れます。 既定では、このコマンドレットは SQLCMD スクリプト変数を設定しません。

このコマンドレットは、主に対話型スクリプト編集に関連するコマンドの使用をサポートしていません。 サポートされないコマンドには、:!!、:connect、:error、:out、:ed、:list、:listvar、:reset、:perftrace、および :serverlist があります。

このコマンドレットを実行すると、スクリプトから返される最初の結果セットが書式設定されたテーブルとして表示されます。 後続の結果セットに最初の結果セットとは異なる列リストが含まれている場合、それらの結果セットは表示されません。 最初のセットの後の後続の結果セットに同じ列リストがある場合、その行は、最初の結果セットによって返された行を含む書式設定されたテーブルに追加されます。

Verbose パラメーター SQL Server指定することで、SQL PRINT ステートメントの結果などのメッセージ出力を表示できます。

例 1: 名前付きインスタンスに接続し、スクリプトを実行する

PS C:\> Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MainInstance"
 TimeOfQuery
 -----------
 5/13/2010 8:49:43 PM

このコマンドは、コンピューター上のSQL Database エンジンの名前付きインスタンスに接続し、基本的な Transact-SQL スクリプトを実行します。

例 2: スクリプト ファイルでコマンドを呼び出し、出力をテキスト ファイルに保存する

PS C:\> Invoke-Sqlcmd -InputFile "C:\ScriptFolder\TestSqlCmd.sql" | Out-File -FilePath "C:\ScriptFolder\TestSqlCmd.rpt"
Output sent to TestSqlCmd.rpt.

このコマンドは、Transact-SQL ステートメントと SQLCMD コマンドを含むファイルを読み取り、ファイルを実行して、出力を別のファイルに書き込みます。 出力ファイルには独自の情報が含まれている可能性があるため、適切な NTFS アクセス許可を使用して出力ファイルをセキュリティで保護する必要があります。

例 3: スクリプトを呼び出し、文字列から変数値を渡す

PS C:\> $StringArray = "MYVAR1='String1'", "MYVAR2='String2'"
PS C:\> Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2;" -Variable $StringArray
Var1     Var2
----     ----
String1  String2

このコマンドは、 Variable パラメーターへの入力として文字列の配列を使用します。 配列は、複数の SQLCMD 変数を定義します。 SQLCMD 変数を識別する SELECT ステートメントの $ 記号は、バックティック (') 文字を使用してエスケープされます。

例 4: スクリプトを呼び出し、SQL データベース エンジンから変数を渡す

PS C:\>Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
PS C:\>Invoke-Sqlcmd -Query "SELECT SERVERPROPERTY('MachineName') AS ComputerName;" -ServerInstance (Get-Item .)
 ComputerName
 ------------
 MyComputer

このコマンドでは、Set-Location を使用して、SQL Database エンジンのインスタンスのSQL Server Windows PowerShell プロバイダー パスに移動します。 次に、Get-Item を呼び出して、Invoke-SqlcmdServerInstance パラメーターとして使用する SQL 管理オブジェクト Server オブジェクトを取得します。

例 5: クエリを実行し、詳細な出力を表示する

PS C:\> Invoke-Sqlcmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc

このコマンドは、Windows PowerShell Verbose パラメーターを使用して、SQL PRINT コマンドのメッセージ出力を返します。

例 6: 位置指定文字列を入力として使用してコマンドを呼び出す

PS C:\> Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
 WARNING: Using provider context. Server = MyComputer, Database = AdventureWorks2014. 

 DatabaseName
 ------------
 AdventureWorks2014

このコマンドでは、位置指定文字列を使用して Query パラメーターに入力を指定します。 また、 Invoke-Sqlcmd が現在のパスを使用してデータベース コンテキストを AdventureWorks2014 に設定する方法についても説明します。

パラメーター

-AbortOnError

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionTimeout

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Database

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DedicatedAdministratorConnection

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableCommands

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableVariables

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EncryptConnection

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ErrorLevel

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HostName

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IgnoreProviderContext

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeSqlUserErrors

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputFile

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxBinaryLength

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxCharLength

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NewPassword

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputSqlErrors

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Password

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Query

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-QueryTimeout

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ServerInstance

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SeverityLevel

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SuppressProviderContextWarning

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Username

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Variable

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

PSObject

出力

書式設定されたテーブル