【PowerShell】Invoke-SqlcmdによるSQLクエリ実行方法

【PowerShell】Invoke-SqlcmdによるSQLクエリ実行方法

PowerShellのInvoke-SqlcmdコマンドでSQLServerに接続してSQLクエリを実行します。

<環境>
OS:Windows10(64bit)
PSVersion:v5.1
Database :Microsoft SQL Server 2022 Developer Edition (64-bit)

Invoke-SqlcmdコマンドでSQLクエリ実行

構文
-SQLServer認証でSQLクエリ実行
Invoke-Sqlcmd -ServerInstance <String> -Database <String> -Username <String> -Password <String> -Query <String>

-Windows認証でSQLクエリ実行
Invoke-Sqlcmd -ServerInstance <String> -Database <String> -Query <String>

  • -ServerInstance
  • 接続先のSQL Serverのインスタンス名を指定します。

  • -Database
  • 接続先のデータベース名を指定します。

  • -Username
  • ログインユーザ名を指定します。Windows認証を使用する場合は省略可能です。

  • -Password
  • ログインユーザのパスワードを指定します。Windows認証を使用する場合は省略可能です。

  • -Query
  • 実行するSQLクエリを指定します。

Invoke-SqlCmdコマンドを使用すると、指定したSQLクエリがSQL Server上で実行されます。データベース接続や認証情報の指定、SQLクエリの実行結果取得などを簡単に行えます。

スクリプト例
# Select実行
$SelectQuery = "Select Name, Price From dbo.Products Where Price < 10000"
$Products = Invoke-Sqlcmd -ServerInstance "localhost" -Database "TestDB" -Username "User01" -Password "Password01" -Query $SelectQuery
# データ表示(SQLクエリのカラム名でアクセスできます。)
foreach($data in  $Products)
{
    Write-Output $data.Name
    Write-Output $data.Price
}

# Insert実行
$InsertQuery = "Insert Into dbo.Products VALUES ('P0011', 'パソコン', 20000)"
Invoke-Sqlcmd -ServerInstance "localhost" -Database "TestDB" -Username "User01" -Password "Password01" -Query $InsertQuery

# Update実行
$UpdateQuery = "Update dbo.Products Set Price = 30000 Where Id = 'P0011'"
Invoke-Sqlcmd -ServerInstance "localhost" -Database "TestDB" -Username "User01" -Password "Password01" -Query $UpdateQuery

# Delete実行
$DeleteQuery = "Delete From dbo.Products Where Id = 'P0009'"
Invoke-Sqlcmd -ServerInstance "localhost" -Database "TestDB" -Username "User01" -Password "Password01" -Query $DeleteQuery

SqlServerモジュールのインストール

Invoke-Sqlcmdコマンドが認識されない場合は、以下のコマンドを使用してSqlServerモジュールをインストールする必要があります。

すべてのユーザーにSqlServerモジュールをインストールする場合は、管理者権限でPowerShellを起動して以下を実行します。
Install-Module -Name SqlServer

カレントユーザーにのみSqlServerモジュールをインストールする場合は、PowerShellを起動して以下を実行します。
Install-Module -Name SqlServer -Scope CurrentUser


Next Post Previous Post