PowerShell を使って SQL Server のバージョンを確認する方法
-
PowerShell で
sqlcmd
ユーティリティを使用して SQL Server バージョンを確認する -
sqlcmd
ユーティリティを使用する利点と欠点 -
PowerShell を使用して
Invoke-Sqlcmd
コマンドレットで SQL Server バージョンを確認する -
PowerShell で SQL Server のバージョンを確認するための
Invoke-Sqlcmd
コマンドレットを使用する利点と欠点 -
sqlcmd
ユーティリティとInvoke-Sqlcmd
コマンドレットの違い - 結論

プログラムのバージョンを確認することは、PowerShell で行う一般的な操作の 1つです。リレーショナルデータベースを管理するために Microsoft SQL Server を使用している場合、コンピューターにインストールされているバージョンを知っておくことが重要です。
このチュートリアルでは、PowerShell を使用して SQL Server のバージョンを確認する 2つの方法を紹介します。
PowerShell で sqlcmd
ユーティリティを使用して SQL Server バージョンを確認する
sqlcmd
は、対話的な Transact-SQL ステートメントやスクリプトを実行するコマンドラインユーティリティです。Transact-SQL スクリプト作業を自動化する役に立ちます。
構文:
sqlcmd -S ServerName\InstanceName -Q "SQL Query"
上記の構文では、ServerName
を SQL Server の名前に、InstanceName
を SQL Server インスタンスの名前に、"SQL Query"
を実行したい特定の SQL クエリに置き換えます。
次のコマンドは、PowerShell に SQL Server のバージョンを表示します。DelftStack
はサーバー名で、SQLEXPRESS
は我々の SQL Server のインスタンス名です。
sqlcmd -S DelftStack\SQLEXPRESS -Q "SELECT @@VERSION"
私たちは、Transact-SQL コマンドやスクリプトを実行するためのコマンドラインツールである sqlcmd
ユーティリティを使用しています。これは、コマンドラインから SQL Server と対話する方法です。
-S DelftStack\SQLEXPRESS
を使用して、接続したいサーバーとインスタンスを指定しています。DelftStack
がサーバー名で、SQLEXPRESS
がインスタンス名であり、この組み合わせが照会したい特定の SQL Server を特定します。
-Q "SELECT @@VERSION"
コマンドの一部は、SQL Server に SQL クエリを実行するよう指示します。この場合、SQL Server にバージョン情報を取得するように要求しています。
SELECT @@VERSION
クエリは、詳細なバージョン情報を返す SQL Server の組み込みコマンドです。
出力:
Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)
Sep 24 2019 13:48:23
Copyright (C) 2019 Microsoft Corporation
Express Edition (64-bit) on Windows 10 Home Single Language 10.0 <X64> (Build 22000: )
(1 rows affected)
出力は、リリースおよびビルド情報を含む SQL Server バージョンの詳細情報を表示します。インストールされている SQL Server のバージョンは 15.0.2000.5
であることを示しています。
sqlcmd
ユーティリティは、すでにインストールされていて、システムの PATH でアクセス可能である必要があります。インストールされていない場合やアクセスできない場合、コマンドは失敗します。
PowerShell で sqlcmd
をインストールするには、sqlcmd
を含む SQL Server コマンドラインユーティリティをインストールする必要があります。
以下は sqlcmd
をインストールする手順です。
-
SQL Server コマンドラインユーティリティをダウンロード
Microsoft SQL Server のダウンロードページにアクセスします。「SQL Server コマンドラインツールをインストール」のセクションまでスクロールし、
"Microsoft Command Line Utilities 15 for SQL Server"
(またはニーズに合った適切なバージョン)をダウンロードリンクをクリックします。 -
インストーラーを実行
ダウンロードしたインストーラー(通常は
.msi
ファイル)を実行します。インストールウィザードの指示に従います。 -
コンポーネントを選択
インストール中にコンポーネントを選択するように求められます。
"Command Line Utilities"
または特に"sqlcmd"
を選択してください。 -
インストールを完了
インストールプロセスを進め、完了したら、システムに
sqlcmd
がインストールされます。 -
インストールを確認
コマンドプロンプトウィンドウを開いて
sqlcmd
と入力します。正しくインストールされていれば、sqlcmd
プロンプトが表示されます。
SQL Server のバージョンによって手順やインストーラーの名前が異なる場合がありますのでご注意ください。インストール中に適切なコンポーネントを選択して、sqlcmd
が含まれていることを確認してください。
さらに、コマンドで指定されたサーバー名とインスタンス名が有効であり、アクセス可能である必要があります。正しくない場合やアクセスできない場合、コマンドは失敗します。
sqlcmd
ユーティリティを使用する利点と欠点
利点:
- スクリプトと自動化のためのコマンドライン制御。
- 追加のモジュールをインストールする必要はありません。
- SQL Server のバージョン全般に広くサポートされています。
欠点:
- 出力がユーザーフレンドリーでない場合があり、追加の解析が必要です。
Invoke-Sqlcmd
と比較して機能が制限されています。
PowerShell を使用して Invoke-Sqlcmd
コマンドレットで SQL Server バージョンを確認する
Invoke-Sqlcmd
コマンドレットは、SQL Server SQLCMD ユーティリティによってサポートされるスクリプトとコマンドを実行します。GO
や QUIT
などの Transact-SQL ステートメントとコマンドを受け入れます。
構文:
Invoke-Sqlcmd -query "SQL Query" -ServerInstance "ServerName\InstanceName"
上記の構文では、"SQL Query"
を実行したい特定の SQL クエリに、"ServerName\InstanceName"
を接続する SQL Server のサーバー名とインスタンス名に置き換えます。このコマンドは、PowerShell 内から SQL クエリを実行するために使用されており、特に SQL Server 作業を PowerShell スクリプトに統合するのに便利です。
次のコマンドは、PowerShell で SQL Server のバージョンを取得します。
Invoke-Sqlcmd -query "SELECT @@VERSION" -ServerInstance "DELFT-PC\SQLEXPRESS"
私たちは、PowerShell の一部であり、SQL Server と対話するために特別に設計された Invoke-Sqlcmd
コマンドレットを使用しています。これにより、PowerShell スクリプトやセッション内から直接 SQL コマンドやクエリを実行できます。
-query "SELECT @@VERSION"
の部分は、実行したい SQL クエリを指定します。この場合、SQL クエリ SELECT @@VERSION
を実行しており、このクエリは接続されている SQL Server の詳細なバージョン情報を取得します。
-ServerInstance "DELFT-PC\SQLEXPRESS"
を使用して、次のコンポーネントで接続するサーバーとインスタンスを定義しています:
-
-ServerInstance
は、接続したいサーバーとインスタンスを示すオプションです。 -
"DELFT-PC\SQLEXPRESS"
は、サーバー名とインスタンス名を組み合わせたものです。"DELFT-PC"
は SQL Server の名前を、"SQLEXPRESS"
は、そのマシンにインストールされた特定の SQL Server インスタンスを表し、この組み合わせが照会したい正確な SQL Server を特定します。
出力:
Column1
-------
Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) ...
上記の出力は、SQL Server のバージョンに関する詳細情報を提供し、リリースやビルドの詳細を含んでいます。
Invoke-Sqlcmd
コマンドレットが認識されない場合は、以下のコマンドを使用してインストールする必要があります。
Install-Module SqlServer
次に、このコマンドを実行してモジュールをインポートします。
Import-Module SqlServer
このアプローチは、PowerShell スクリプトに SQL Server 作業を統合し、データ操作と自動化のために PowerShell の力を活用するために便利です。
重要な点として、Invoke-Sqlcmd
コマンドレットは、現在の PowerShell セッションで既に利用可能です。必要なモジュールがインポートされていない場合、コードはエラーとともに失敗します。
さらに、指定された SQL Server インスタンス("DELFT-PC\SQLEXPRESS"
)が不正確またはアクセス不可能な場合、コードは接続およびクエリの実行に失敗します。
PowerShell で SQL Server のバージョンを確認するための Invoke-Sqlcmd
コマンドレットを使用する利点と欠点
利点:
- 高度なスクリプトのための PowerShell とのシームレスな統合。
- より構造化され、ユーザーフレンドリーな出力。
- 複雑なデータベース作業に対する豊富な機能セット。
欠点:
SqlServer
モジュールのインストールが必要です。- SQL Server のバージョンによって互換性が異なる場合があります。
sqlcmd
ユーティリティと Invoke-Sqlcmd
コマンドレットの違い
SQL Server のバージョンを PowerShell で確認するための sqlcmd
ユーティリティと Invoke-Sqlcmd
コマンドレットの 2つのメソッドの主な違いは、それぞれのアプローチ、統合、使いやすさで要約できます。
主な違いは、sqlcmd
が PowerShell に限られた統合を持つ外部ユーティリティであるという点です。これは、別のコマンドラインツールとして機能し、PowerShell スクリプト内でも使用できますが、Invoke-Sqlcmd
ほどの統合性や柔軟性を提供しません。
一方、Invoke-Sqlcmd
は、SQL Server と対話するために特別に設計された PowerShell ネイティブのコマンドレットです。このコマンドレットは、PowerShell スクリプト内で SQL Server データを管理するためのより強力で統合されたアプローチを提供し、PowerShell とのシームレスな統合、構造化された出力、および高度なデータ操作機能を可能にします。
結論
このチュートリアルでは、PowerShell で SQL Server のバージョンを確認する 2つの方法、すなわち sqlcmd
ユーティリティと Invoke-Sqlcmd
コマンドレットを探ります。
コマンドラインツールである sqlcmd
ユーティリティは、コマンドライン制御を提供し、追加のモジュールインストールを必要としません。ただし、その出力は追加の解析が必要となる場合があり、Invoke-Sqlcmd
と比較すると機能が制限されています。
ネイティブの PowerShell ツールである Invoke-Sqlcmd
コマンドレットは、PowerShell とのシームレスな統合、構造化されたユーザーフレンドリーな出力、および広範な SQL Server 機能を提供します。ただし、SqlServer
モジュールのインストールが必要です。
ベストプラクティスとして、ソフトウェアやモジュールの名前は時間とともに変化する可能性があるため、特定の環境に基づいてモジュール名とバージョンを確認することが重要です。これにより、提供されたコードやメソッドが関連性を持ち、機能し続けることが確保されます。