Invoke-Sqlcmd

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

構文

Invoke-Sqlcmd
      [-ServerInstance <PSObject>]
      [-Database <String>]
      [-EncryptConnection]
      [-Username <String>]
      [-AccessToken <String>]
      [-Password <String>]
      [-Credential <PSCredential>]
      [[-Query] <String>]
      [-QueryTimeout <Int32>]
      [-ConnectionTimeout <Int32>]
      [-ErrorLevel <Int32>]
      [-SeverityLevel <Int32>]
      [-MaxCharLength <Int32>]
      [-MaxBinaryLength <Int32>]
      [-AbortOnError]
      [-DedicatedAdministratorConnection]
      [-DisableVariables]
      [-DisableCommands]
      [-HostName <String>]
      [-ApplicationName <String>]
      [-ApplicationIntent <ApplicationIntent>]
      [-MultiSubnetFailover]
      [-FailoverPartner <String>]
      [-NewPassword <String>]
      [-Variable <String[]>]
      [-InputFile <String>]
      [-OutputSqlErrors <Boolean>]
      [-IncludeSqlUserErrors]
      [-SuppressProviderContextWarning]
      [-IgnoreProviderContext]
      [-OutputAs <OutputType>]
      [-StatisticsVariable <String>]
      [<CommonParameters>]
Invoke-Sqlcmd
      [[-Query] <String>]
      [-QueryTimeout <Int32>]
      [-ErrorLevel <Int32>]
      [-SeverityLevel <Int32>]
      [-MaxCharLength <Int32>]
      [-MaxBinaryLength <Int32>]
      [-AbortOnError]
      [-DisableVariables]
      [-DisableCommands]
      [-Variable <String[]>]
      [-InputFile <String>]
      [-OutputSqlErrors <Boolean>]
      [-IncludeSqlUserErrors]
      [-OutputAs <OutputType>]
      -ConnectionString <String>
      [-StatisticsVariable <String>]
      [<CommonParameters>]

説明

Invoke-Sqlcmd コマンドレットは、SQL Server SQLCMD ユーティリティでサポートされている言語とコマンドを含むスクリプトを実行します。

サポートされるコマンドは、Transact-SQL ステートメントと、データベース エンジンでサポートされている XQuery 構文のサブセットです。

このコマンドレットは、GO や QUIT など、SQLCMD でネイティブにサポートされているコマンドの多くも受け入れます。

このコマンドレットでは、SQLCMDUSER などの SQLCMD スクリプト変数も受け入れます。 既定では、このコマンドレットは SQLCMD スクリプト変数を設定しません。

このコマンドレットは、主に対話型スクリプト編集に関連するコマンドの使用をサポートしていません。

サポートされないコマンドには、:!!、:connect、:error、:out、:ed、:list、:listvar、:reset、:perftrace、および :serverlist があります。

このコマンドレットを実行すると、スクリプトから返される最初の結果セットが書式設定されたテーブルとして表示されます。

後続の結果セットに最初の列リストとは異なる列リストが含まれている場合、それらの結果セットは表示されません。

最初のセットの後の後続の結果セットに同じ列リストがある場合、その行は、最初の結果セットによって返された行を含む書式設定されたテーブルに追加されます。

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

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

PS C:\> Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery" -ServerInstance "MyComputer\MainInstance"

TimeOfQuery
-----------
9/21/2017 2:48:24 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 SQLSERVER:\SQL\MyComputer\MainInstance> Invoke-Sqlcmd -Query "SELECT SERVERPROPERTY('MachineName') AS ComputerName" -ServerInstance (Get-Item .)

ComputerName
------------
MyComputer

このコマンドは、Set-Locationを使用して、SQL Database エンジンのインスタンスの SQL ServerWindows PowerShell プロバイダー パスに移動します。

次に、Get-Item を呼び出して、Invoke-Sqlcmd の ServerInstance パラメーターとして使用する SQL 管理オブジェクト サーバー オブジェクトを取得します。

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

PS C:\> Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
PS C:\> Invoke-SqlCmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc

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

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

PS C:\> Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance\Databases\MyDatabase"
PS SQLSERVER:\SQL\MyComputer\MainInstance> Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName"
WARNING: Using provider context. Server = MyComputer\MainInstance, Database = MyDatabase.

DatabaseName
------------
MyDatabase

このコマンドは、位置指定文字列を使用して、Query パラメーターへの入力を指定します。

また、Invoke-Sqlcmdが現在のパスを使用してデータベース コンテキストを MyDatabase に設定する方法についても説明します。

例 7: DataSet オブジェクトにデータをキャプチャする

PS C:\> $DS = Invoke-Sqlcmd -ServerInstance "MyComputer" -Query "SELECT  ID, Item FROM MyDB.dbo.MyTable" -As DataSet
PS C:\> $DS.Tables[0].Rows | %{ echo "{ $($_['ID']), $($_['Item']) }" }

{ 10, AAA }
{ 20, BBB }
{ 30, CCC }

このコマンドは、As DataSet パラメーターを使用して.Net System.Data.DataSet オブジェクトにデータをキャプチャし、結果を変数 '$DS' に格納します。 オブジェクトは、さらに処理するために使用できます。

例 8: 特定の列セットを取得する

PS C:\> $Tables = Invoke-Sqlcmd -ServerInstance "MyComputer" -Query "SELECT  Item, id FROM MyDatabase.dbo.MyTable; SELECT GETDATE() AS T" -As DataTables
PS C:\> $Tables[0].Rows | %{ echo $_.ID }
PS C:\> $Tables[1].Rows | %{ echo $_.T.DayOfWeek }

10
20
30

Monday

最初のコマンドでは、As DataTables パラメーターを使用して、.Net System.Data.DataTable オブジェクトのコレクションにデータをキャプチャします。 このコマンドは、異なる列セットを持つ 2 つのテーブルを取得します。

各テーブルは、独自のスキーマに基づいて個別に処理できます。

例 9: 接続を完全に制御する

PS C:\> Invoke-Sqlcmd -Query "SELECT COUNT(*) AS Count FROM MyTable" -ConnectionString "Data Source=MYSERVER;Initial Catalog=MyDatabase;Integrated Security=True;ApplicationIntent=ReadOnly"
Count
-----
127432

このコマンドは 、-ConnectionString パラメーターを使用して、コマンド ラインで渡されたパラメーターに基づいて接続文字列を構築するInvoke-Sqlcmdではなく、このコマンドレットが確立する接続を完全に制御します。

これは、あまり一般的でないプロパティを使用する場合に便利です。

例 10: ストアド プロシージャを実行し、SQL エラーをキャプチャする

PS C:\> $script_sp_with_errors = @'
CREATE PROCEDURE [dbo].[TestProcedure3]
AS 
BEGIN 
  CREATE TABLE [dbo].[TestTable] (col INT NOT NULL);
  INSERT INTO [dbo].[TestTable] VALUES (NULL); -- will cause an error
END
GO
'@

# Create a test database
PS C:\> Invoke-SqlCmd -ServerInstance MyServer -Query 'CREATE DATABASE TestDB'
# ... adds a stored procedure that has errors in it...
PS C:\> Invoke-SqlCmd -ServerInstance MyServer -Database 'TestDB' -Query $script_sp_with_errors
# ... executes the SP and collected the errors
PS C:\> Invoke-SqlCmd -ServerInstance MyServer -Database 'TestDB' -Query 'EXEC TestProcedure3' -OutputSqlErrors $true

Here's the output:
Invoke-SqlCmd : Cannot insert the value NULL into column 'col', table 'TestDB.dbo.TestTable'; column does not allow nulls. INSERT fails.
The statement has been terminated.
 Msg 515, Level 16, State 2, Procedure TestProcedure3, Line 5.
At line:1 char:1
...

このコマンドは 、-OutputSqlErrors パラメーターを使用してエラーをユーザーに報告します。 この場合のエラー メッセージは、SP 名やエラーが発生した行番号などの追加情報を提供します。

例 11: アクセス トークンを使用して Azure SQL データベース (または Managed Instance) に接続する

Import-Module SQLServer
Import-Module Az.Accounts -MinimumVersion 2.2.0

# Note: the sample assumes that you or your DBA configured the server to accept connections using
#       that Service Principal and has granted it access to the database (in this example at least
#       the SELECT permission).

### Obtain the Access Token: this will bring up the login dialog
Connect-AzAccount
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token

# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token`
              -query 'select * from Table1'

例 12: サービス プリンシパルを使用して Azure SQL データベース (または Managed Instance) に接続する

Import-Module SQLServer

# Note: the sample assumes that you or your DBA configured the server to accept connections using
#       that Service Principal and has granted it access to the database (in this example at least
#       the SELECT permission).

$clientid = "enter application id that corresponds to the Service Principal" # Do not confuse with its display name
$tenantid = "enter the tenant ID of the Service Principal"
$secret = "enter the secret associated with the Service Principal"

$request = Invoke-RestMethod -Method POST `
           -Uri "https://login.microsoftonline.com/$tenantid/oauth2/token"`
           -Body @{ resource="https://database.windows.net/"; grant_type="client_credentials"; client_id=$clientid; client_secret=$secret }`
           -ContentType "application/x-www-form-urlencoded"
$access_token = $request.access_token

# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token`
              -query 'select * from Table1'

例 13: マネージド ID を使用して Azure SQL データベース (または Managed Instance) に接続する

Import-Module SQLServer

# Note: the sample assumes that you or your DBA configured the server to accept connections using
#       that VM Identity you are running on and has granted it access to the database (in this 
#       example at least the SELECT permission).

### Obtain the Access Token from the machine
$response = Invoke-WebRequest `
     -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net'`
     -Method GET`
     -Headers @{Metadata="true"}
$access_token = ($response.Content | ConvertFrom-Json).access_token

# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token`
              -query 'select * from Table1'

この例は上記の例のようになります。 AccessToken パラメーターの柔軟性のみが表示されます。

例 14: -ApplicationIntent を使用して Read-Only ルーティング用に構成された可用性グループに接続する

# In the following example:
# - MT_2009250511 is a listener for an AG configured for Read-Only Routing (port 5555)
# - AGDB_2_1 is the DB in the AG
# - VLM00226138 is the primary replica configured to only allow ReadWrite connections 
# - VLM00226137 is the secondary replica
# 
Invoke-Sqlcmd -ServerInstance "MT_2009250511,5555" -Database AGDB_2_1 `
     -HostName "PowershellBox1" -ApplicationName "ReadWrite" -ApplicationIntent ReadWrite `
     -Query "select HOST_NAME() AS HostName, APP_NAME() AS ApplicationIntent, @@SERVERNAME AS ServerName"

Invoke-Sqlcmd -ServerInstance "MT_2009250511,5555" -Database AGDB_2_1 `
     -HostName "PowershellBox2" -ApplicationName "ReadOnly" -ApplicationIntent ReadOnly `
     -Query "select HOST_NAME() AS HostName, APP_NAME() AS ApplicationIntent, @@SERVERNAME AS ServerName"  

# When you run the 2 cmdlets above, the output is going to be something like this:  
#  
# HostName       ApplicationIntent ServerName  
# --------       ----------------- ----------  
# PowershellBox1 ReadWrite         VLM00226138  
#  
# HostName       ApplicationIntent ServerName  
# --------       ----------------- ----------  
# PowershellBox2 ReadOnly          VLM00226137

これは、パラメーターの値に応じて、接続が AG 内の -ApplicationIntent 別のサーバーにルーティングされることを示しています。 なお、2 つの結果を視覚的に区別するために、パラメーターと-HostNameパラメーターの-ApplicationName使用方法を確認します。これは、次に示す -ApplicationIntent の例を超えて、接続とその意図をトレースするために使用できる一般的な手法です。

例 15: -StatisticsVariable パラメーターを使用して接続統計をキャプチャする

Import-Module SQLServer
Invoke-Sqlcmd -ServerInstance localhost -StatisticsVariable stats `
              -Query 'CREATE TABLE #Table (ID int); INSERT INTO #Table VALUES(1), (2); INSERT INTO #Table VALUES(3); SELECT * FROM #Table'

Write-Host "Number of rows affected......: $($stats.IduRows)"
Write-Host "Number of insert statements..: $($stats.IduCount)"
Write-Host "Number of select statements..: $($stats.SelectCount)"
Write-Host "Total execution time.........: $($stats.ExecutionTime)ms"

# When you run the code fragment above, is going to be something like this:  
#
# Number of rows affected......: 3
# Number of insert statements..: 2
# Number of select statements..: 1
# Total execution time.........: 5ms

この例では、このパラメーターを使用 -StatisticsVariable して、一時テーブルを作成し、いくつかの値を挿入し、最後に挿入されたすべての行を取得するための選択を発行する T-SQL の実行時に、接続、実行されたステートメント、および実行時間に関する情報をキャプチャする方法を示します。

注: 同じクエリが複数のサーバーに対して実行される場合 (たとえば、コマンドレットを通してサーバー名をパイプ処理することによって) StatisticsVariable 、統計情報の配列がキャプチャされ、接続ごとに 1 つずつキャプチャされます。 次に、たとえば ($stats.IduRows | Measure-Object -Sum).Sum、結果を集計できます。

使用可能な統計の詳細については、SQL Serverのプロバイダー統計を参照してください。

パラメーター

-AbortOnError

このコマンドレットがSQL Server コマンドを停止し、このコマンドレットでエラーが発生した場合にエラー レベルを Windows PowerShell ERRORLEVEL 変数に返します。

返されるエラー レベルは、エラーの重大度が 10 より大きい場合は 1、エラーの重大度が 10 以下の場合は 0 です。

ErrorLevel パラメーターも指定されている場合、このコマンドレットは、エラー メッセージの重大度も ErrorLevel に指定された値以上の場合にのみ 1 を返します。

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

-AccessToken

ユーザー/パスワードまたは Windows 認証の代わりに、SQL Serverの認証に使用される有効なアクセス トークン。

これは、たとえば、a または a Service PrincipalManaged Identity に接続SQL Azure DBSQL Azure Managed Instanceして使用するために使用できます (このページの下部にある参照を参照してください)。

このパラメーターを使用する場合は、 UserNamePassword、または Credential を指定しないでください。

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

-ApplicationIntent

SQL Server可用性グループ内のデータベースに接続するときのアプリケーション ワークロードの種類。

使用できる値は、ReadOnly と ReadWrite です。

Type:ApplicationIntent
Position:Named
Default value:ReadWrite
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

接続に関連付けられているアプリケーションの名前。

Type:String
Position:Named
Default value:.NET SqlClient Data Provider
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionString

サーバーに接続する接続文字列を指定します。

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

-ConnectionTimeout

データベース エンジンのインスタンスに正常に接続できない場合に、このコマンドレットがタイムアウトしたときの秒数を指定します。 タイムアウト値は、0 ~ 65534 の整数値である必要があります。 0 を指定した場合、接続の試行はタイムアウトしません。

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

-Credential

ユーザー名フィールドとパスワード フィールドを使用して SQL インスタンスに接続する PSCredential オブジェクト。

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

-Database

データベースの名前を指定します。 このコマンドレットは、ServerInstance パラメーターで指定されたインスタンス内のこのデータベースに接続します。

Database パラメーターが指定されていない場合、使用されるデータベースは、現在のパスで SQLSERVER:\SQL フォルダーとデータベース名の両方を指定するかどうかによって異なります。 パスに SQL フォルダーとデータベース名の両方が指定されている場合、このコマンドレットはパスで指定されたデータベースに接続します。 パスが SQL フォルダーに基づいていない場合、またはパスにデータベース名が含まれていない場合、このコマンドレットは現在のログイン ID の既定のデータベースに接続します。 IgnoreProviderContext パラメーター スイッチを指定した場合、このコマンドレットは現在のパスで指定されたデータベースを考慮せず、現在のログイン ID の既定値として定義されたデータベースに接続します。

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

-DedicatedAdministratorConnection

このコマンドレットが専用管理者接続 (DAC) を使用してデータベース エンジンのインスタンスに接続することを示します。

DAC は、新しい標準接続を受け入れないインスタンスのトラブルシューティングなどのアクションに対してシステム管理者が使用します。

インスタンスは、DAC をサポートするよう構成する必要があります

DAC が有効になっていない場合、このコマンドレットはエラーを報告し、実行されません。

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

-DisableCommands

バッチ ファイルで実行するとセキュリティが損なわれる可能性のある sqlcmd 機能の一部を、このコマンドレットによって無効にすることを示します。

Windows PowerShell変数がInvoke-Sqlcmd スクリプトに渡されないようにします。

SQLCMDINI スクリプト変数で指定されたスタートアップ スクリプトは実行されません。

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

-DisableVariables

このコマンドレットが sqlcmd スクリプト変数を無視することを示します。 これは、$(variable_name) などの変数と同じ形式の文字列を含む INSERT ステートメントが、スクリプトに多数含まれている場合に便利です。

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

-EncryptConnection

このコマンドレットが、ServerInstance パラメーターで指定されたデータベース エンジンのインスタンスへの接続に Secure Sockets Layer (SSL) 暗号化を使用することを示します。

このパラメーターを指定すると、SSL 暗号化が使用されます。

このパラメーターを指定しない場合、指定された暗号化は使用されません。

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

-ErrorLevel

このコマンドレットは、重大度レベルが指定された値以上のエラー メッセージのみを表示するように指定します。 このパラメーターが指定されていない場合、または 0 に設定されていない場合、すべてのエラー メッセージが表示されます。 データベース エンジン エラーの重大度は 1 ~ 24 です。

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

-FailoverPartner

プライマリ サーバーがダウンしている場合に接続するパートナー サーバーの名前またはアドレス。

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

-HostName

ワークステーション名を指定します。 ワークステーション名は、sp_who システム ストアド プロシージャによって、sys.processes カタログ ビューの hostname 列で報告されます。 このパラメーターを指定しない場合、既定値は、Invoke-Sqlcmdを実行するコンピューターの名前です。 このパラメーターは、さまざまなInvoke-Sqlcmd セッションを識別するために使用できます。

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

-IgnoreProviderContext

このコマンドレットは、現在の SQLSERVER:\SQL パスによって確立されたデータベース コンテキストを無視することを示します。 Database パラメーターが指定されていない場合、このコマンドレットは現在のログイン ID または Windows アカウントに既定のデータベースを使用します。

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

-IncludeSqlUserErrors

このコマンドレットは、既定では無視される SQL ユーザー スクリプト エラーを返します。 このパラメーターを指定すると、このコマンドレットは sqlcmd ユーティリティの既定の動作と一致します。

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

-InputFile

このコマンドレットへのクエリ入力として使用するファイルを指定します。 このファイルには、Transact-SQL ステートメント、XQuery ステートメント、sqlcmd コマンド、およびスクリプト変数を含めることができます。 ファイルへの完全なパスを指定します。 ファイル パスまたはファイル名にスペースを含めることはできません。 ファイルは UTF-8 を使用してエンコードされる必要があります。

スクリプトは信頼できるソースからのみ実行する必要があります。 すべての入力スクリプトが適切な NTFS 権限で保護されていることを確認してください。

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

-MaxBinaryLength

binary や varbinary など、バイナリ文字列型の列に返される最大バイト数を指定します。 既定値は 1,024 バイトです。

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

-MaxCharLength

char、nchar、varchar、nvarchar など、文字または Unicode のデータ型の列に返される最大文字数を指定します。 既定値は 4,000 文字です。

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

-MultiSubnetFailover

アプリケーションが異なるサブネット上の AlwaysOn 可用性グループ (AG) に接続している場合、このパラメーターを渡すと、(現在) アクティブなサーバーの検出と接続が高速化されます。

注: .NET Framework 4.6.1 以降のバージョンでは、-MultiSubnetFailover を渡す必要はありません。

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

-NewPassword

SQL Server 認証ログイン ID の新しいパスワードを指定します。 このコマンドレットは、パスワードを変更して終了します。 また、ログインの現在のパスワードを指定するパスワードを使用して、ユーザー名とパスワードのパラメーターを指定する必要があります。

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

-OutputAs

このコマンドレットが取得する結果の種類を指定します。

このパラメーターの値を指定しない場合、コマンドレットは値を DataRows に設定します。

Type:OutputType
Aliases:As
Accepted values:DataSet, DataTables, DataRows
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-OutputSqlErrors

このコマンドレットがInvoke-Sqlcmd出力にエラー メッセージを表示することを示します。

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

-Password

Username パラメーターで指定されたSQL Server認証ログイン ID のパスワードを指定します。 パスワードでは大文字と小文字が区別されます。 可能な場合は、Windows 認証を使用します。 空白のパスワードは使用せず、できるだけ強力なパスワードを使用してください。

パスワード パラメーターの後にパスワードを指定すると、モニターを見ることができるすべてのユーザーにパスワードが表示されます。

パスワードの後にパスワードを.ps1スクリプトでコーディングすると、スクリプト ファイルを読んでいるすべてのユーザーにパスワードが表示されます。

他のユーザーがファイルを読み取ることをできないようにするには、適切な NTDB 権限をファイルに割り当てます。

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

-Query

このコマンドレットが実行する 1 つ以上のクエリを指定します。 クエリには、Transact-SQL ステートメント、XQuery ステートメント、または sqlcmd コマンドを指定できます。 複数のクエリは、セミコロン (;) で区切って指定できます。 sqlcmd の GO 区切り記号は指定しないでください。 文字列に含まれる二重引用符はエスケープされます。 "MyTable" のように引用符で囲まれた識別子ではなく、[MyTable] のように角かっこで囲まれた識別子を使用することを検討してください。

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

-QueryTimeout

クエリがタイムアウトするまでの秒数を指定します。タイムアウト値が指定されていない場合、クエリはタイムアウトになりません。タイムアウトは、1 ~ 65535 の整数値である必要があります。

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

-ServerInstance

データベース エンジンのインスタンスの名前を指定する文字列またはSQL Server管理オブジェクト (SMO) オブジェクトを指定します。 既定のインスタンスの場合は、コンピューター名 MyComputer のみを指定します。 名前付きインスタンスの場合は、ComputerName\InstanceName という形式を使用します。

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

-SeverityLevel

このコマンドレットが ERRORLEVEL Windows PowerShell変数に返すエラー メッセージ重大度レベルの下限を指定します。

このコマンドレットは、重大度が SeverityLevel パラメーターで指定されている以上である場合に、実行するクエリによって生成されたエラー メッセージから最も高い重大度レベルを返します。

SeverityLevel が指定されていない場合、または 0 に設定されている場合、このコマンドレットは 0 を ERRORLEVEL に返します。

データベース エンジンのエラー メッセージの重大度は 1 ~ 24 です。

このコマンドレットでは、重大度が 10 の情報メッセージの重大度は報告されません。

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

-StatisticsVariable

コマンドレットの実行時にSQL Server実行時の統計が割り当てられる PowerShell 変数の名前を指定します。

このパラメーターの一般的な用途は、(プロバイダーがコマンドレットの処理に費やした累積時間 (ミリ秒単位))、または IduRows (INSERT、DELETE、UPDATE ステートメントの影響を受ける行の合計数) をキャプチャExecutionTimeすることです。

詳細については、「SQL Serverのプロバイダー統計」を参照してください。

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

-SuppressProviderContextWarning

このコマンドレットが、現在の SQLSERVER:\SQL パス設定のデータベース コンテキストでこのコマンドレットがコマンドレットのデータベース コンテキストを確立するために使用したという警告を抑制することを示します。

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

-Username

データベース エンジンのインスタンスへの SQL Server 認証接続を確立するためのログイン ID を指定します。

パスワードは、Password パラメーターを使用して指定する必要があります。

ユーザー名とパスワードが指定されていない場合、このコマンドレットは、Windows PowerShell セッションを実行している Windows アカウントを使用して Windows 認証接続を試行します。 可能な場合は、Windows 認証を使用します。

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

-Variable

文字列配列として、sqlcmd スクリプトで使用する sqlcmd スクリプト変数を指定し、変数の値を設定します。

Windows PowerShell配列を使用して、複数の変数とその値を指定します。

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

入力

System.Management.Automation.PSObject

PSObject

出力

書式設定されたテーブル