sys.databasesシステムビューを使用してデータベースが存在するかどうかを確認する
SQL Server でデータベースが存在するかどうかを確認する方法
SSMS を使用する
SQL Server Management Studio (SSMS) は、SQL Server を管理するためのグラフィカルツールです。SSMS を使用してデータベースが存在するかどうかを確認するには、次の手順に従います。
- SSMS を起動します。
- オブジェクトエクスプローラーで、データベース フォルダーを展開します。
- データベースサーバーの名前を右クリックし、データベースの接続 を選択します。
- 接続 ダイアログボックスで、データベース ドロップダウンリストから確認するデータベースを選択します。
- OK をクリックします。
データベースが存在する場合は、SSMS はデータベースに接続し、オブジェクトエクスプローラーにデータベースが表示されます。データベースが存在しない場合は、SSMS はエラーメッセージを表示します。
T-SQL は、SQL Server でクエリを実行するために使用される言語です。T-SQL を使用してデータベースが存在するかどうかを確認するには、次のクエリを使用できます。
SELECT name
FROM sys.databases
WHERE name = 'database_name';
database_name は、確認するデータベースの名前です。
このクエリは、存在する場合はデータベースの名前を返します。データベースが存在しない場合は、クエリは空の結果セットを返します。
sys.databases システムビューには、SQL Server インスタンス上のすべてのデータベースに関する情報が含まれています。このビューを使用して、データベースが存在するかどうかを確認するには、次のクエリを使用できます。
SELECT COUNT(*)
FROM sys.databases
WHERE name = 'database_name';
このクエリは、データベースが存在する場合は 1 を返し、存在しない場合は 0 を返します。
PowerShell は、Windows を管理するためのコマンドラインツールです。PowerShell を使用してデータベースが存在するかどうかを確認するには、次のコマンドを使用できます。
Get-ChildItem -Path SQLSERVER:\Databases | Where-Object {$_.Name -eq 'database_name'}
このコマンドは、データベースが存在する場合はデータベースオブジェクトを返し、存在しない場合は何も返しません。
どの方法を使用するかは、状況によって異なります。SSMS は最も使いやすい方法ですが、T-SQL や PowerShell は、スクリプトや自動化タスクで使用できます。
上記の方法に加えて、データベースが存在するかどうかを確認する方法は他にもいくつかあります。詳細については、次のリソースを参照してください。
USE master;
GO
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = 'MyDatabase'
)
BEGIN
PRINT 'データベース MyDatabase は存在します。';
END
ELSE
BEGIN
PRINT 'データベース MyDatabase は存在しません。';
END
PowerShell を使用してデータベースが存在するかどうかを確認する
$databaseName = 'MyDatabase'
if (Get-ChildItem -Path SQLSERVER:\Databases | Where-Object {$_.Name -eq $databaseName}) {
Write-Host "データベース $databaseName は存在します。"
} else {
Write-Host "データベース $databaseName は存在しません。"
}
データベースが存在しない場合は、SSMS は次のようなエラーメッセージを表示します。
ログインに失敗しました。ユーザー 'NT AUTHORITY\ANONYMOUS LOGON' はデータベース 'MyDatabase' にアクセスできません。
データベースが存在するかどうかを確認するその他の方法
sqlcmd -S <server_name> -d <database_name> -Q "SELECT 1;"
server_name は、SQL Server インスタンスの名前です。 database_name は、確認するデータベースの名前です。
WMI (Windows Management Instrumentation) は、Windows システムを管理するための API です。WMI を使用してデータベースが存在するかどうかを確認するには、次のスクリプトを使用できます。
$server = 'localhost'
$database = 'MyDatabase'
$wmi = New-Object -ComObject WbemScripting.SWbemLocator
$service = $wmi.ConnectServer($server, 'root\Microsoft\SQLServer\ComputerManagement13')
$query = "SELECT * FROM Win32_Service WHERE Name = 'MSSQLSERVER'"
$services = $service.ExecQuery($query)
foreach ($service in $services) {
if ($service.DisplayName -eq $database) {
Write-Host "データベース $database は存在します。"
break
}
}
if (-not $services.Count) {
Write-Host "データベース $database は存在しません。"
}
.NET Framework を使用してデータベースが存在するかどうかを確認するには、次のコードを使用できます。
using System.Data.SqlClient;
public static bool DatabaseExists(string serverName, string databaseName)
{
using (var connection = new SqlConnection(string.Format("Data Source={0};Initial Catalog={1};Integrated Security=True;", serverName, databaseName)))
{
try
{
connection.Open();
return true;
}
catch (SqlException)
{
return false;
}
}
}
sql-server database t-sql