SQL Serverのデータベースインスタンス名を取得する方法:@@SERVERNAME、sys.servers、WMI、SSMS、環境変数など
SQL Serverの現在のデータベースインスタンスの名前を照会する方法
方法1:@@SERVERNAMEを使用する
Transact-SQL
SELECT @@SERVERNAME;
PowerShell
$server = Get-Service -Name MSSQLSERVER
$server.DisplayName
方法2:sys.serversを使用する
SELECT name
FROM sys.servers
WHERE is_current = 1;
方法3:WMIを使用する
Get-CimInstance -ClassName Win32_ComputerSystem -Property Name
方法4:SQL Server Management Studioを使用する
- オブジェクトエクスプローラーで、サーバー ノードを展開します。
- データベースエンジン ノードを右クリックし、プロパティ を選択します。
- 接続 ページで、サーバー名 の値を確認します。
$env:COMPUTERNAME
コマンドプロンプト
echo %COMPUTERNAME%
方法の比較
方法 | 利点 | 欠点 |
---|---|---|
@@SERVERNAME | シンプルで使いやすい | デフォルトインスタンスのみ |
sys.servers | すべてのインスタンスを取得できる | 少し複雑 |
WMI | スクリプトから使いやすい | 複雑な構文 |
SSMS | GUIで直感的に操作できる | SSMSをインストールする必要がある |
環境変数 | 非常にシンプル | デフォルトインスタンスのみ |
- デフォルトインスタンスの名前を取得する場合は、@@SERVERNAME または環境変数を使用するのが最も簡単です。
- すべてのインスタンスの名前を取得する場合は、sys.servers を使用するのが最善です。
- スクリプトから名前を取得する場合は、PowerShell と WMI を使用できます。
- GUI で操作したい場合は、SSMS を使用するのが便利です。
SELECT @@SERVERNAME;
$server = Get-Service -Name MSSQLSERVER
$server.DisplayName
SELECT name
FROM sys.servers
WHERE is_current = 1;
Get-CimInstance -ClassName Win32_ComputerSystem -Property Name
$env:COMPUTERNAME
echo %COMPUTERNAME%
注: これらのサンプルコードは、SQL Server 2017 で動作確認しています。他のバージョンの SQL Server では、構文が異なる場合があります。
方法6:HOST_NAME() 関数を使用する
SELECT HOST_NAME();
方法7:sys.dm_exec_connections DMV を使用する
SELECT session_id,
database_name,
client_net_address,
client_hostname
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
方法8:xp_msver を使用する
EXEC xp_msver;
方法9:レジストリを使用する
レジストリエディタ
- レジストリエディタを開きます。
- 次のキーに移動します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer
- CurrentInstance の値を確認します。
方法10:.Net Framework を使用する
C#
using System;
using System.Data.SqlClient;
public class Program
{
public static void Main(string[] args)
{
using (var connection = new SqlConnection("server=localhost;integrated security=True;"))
{
connection.Open();
var cmd = new SqlCommand("SELECT @@SERVERNAME;", connection);
var serverName = (string)cmd.ExecuteScalar();
Console.WriteLine(serverName);
}
}
}
sql sql-server database