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-Sqlcmd の ServerInstance パラメーターとして使用する 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 |
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
出力
書式設定されたテーブル