Was ist der beste Weg, um zu überprüfen, ob eine Datenbank auf einem SQL Server mit TSQL vorhanden ist? Es scheint mehrere Ansätze zu sein, um dies umzusetzen.
Aus einem Microsoft-Skript:
DECLARE @dbname nvarchar(128)
SET @dbname = N'Senna'
IF (EXISTS (SELECT name
FROM master.dbo.sysdatabases
WHERE ('[' + name + ']' = @dbname
OR name = @dbname)))
-- code mine :)
PRINT 'db exists'
Eigentlich ist es am besten zu verwenden:
IF DB_ID('dms') IS NOT NULL
--code mine :)
print 'db exists'
Siehe https://docs.Microsoft.com/de-de/sql/t-sql/functions/db-id-transact-sql
IF EXISTS (SELECT name FROM master.sys.databases WHERE name = N'YourDatabaseName')
Do your thing...
Das kam übrigens direkt aus SQL Server Studio. Wenn Sie also Zugriff auf dieses Tool haben, empfehle ich Ihnen, mit den verschiedenen verfügbaren Funktionen "Script xxxx AS" zu beginnen. Macht dein Leben leichter! :)
Ich mag die Antwort von Eduardo und die akzeptierte Antwort hat mir gefallen. Ich mag es, einen Boolean aus so etwas zurückzuholen, also habe ich es für euch geschrieben.
CREATE FUNCTION dbo.DatabaseExists(@dbname nvarchar(128))
RETURNS bit
AS
BEGIN
declare @result bit = 0
SELECT @result = CAST(
CASE WHEN db_id(@dbname) is not null THEN 1
ELSE 0
END
AS BIT)
return @result
END
GO
Jetzt kannst du es so benutzen:
select [dbo].[DatabaseExists]('master') --returns 1
select [dbo].[DatabaseExists]('slave') --returns 0
Eine andere Möglichkeit besteht darin, SqlDataReader
zusammen mit SqlConnection
und SqlCommand
zu verwenden. Verwenden Sie die Eigenschaft HasRows
. Es ist true
, wenn die Datenbank vorhanden ist, und false
, wenn nicht.
Beispiel (in diesem Beispiel lautet der Datenbankname "Übereinstimmungen"):
string CreateDatabaseConnectionString="/*the connection string*/";
public static bool DatabaseExists()
{
bool Count;
string DatabaseCheckString = "select name from master.sys.databases where name='Matches'";
SqlConnection MyConn = new SqlConnection(CreateDatabaseConnectionString);
SqlCommand DatabaseExistsCommand = new SqlCommand(DatabaseCheckString, MyConn);
MyConn.Open();
SqlDataReader Reader = DatabaseExistsCommand.ExecuteReader();
Count = Reader.HasRows;
MyConn.Close();
return Count;
}
VERSUCHE DIES
IF EXISTS
(
SELECT name FROM master.dbo.sysdatabases
WHERE name = N'New_Database'
)
BEGIN
SELECT 'Database Name already Exist' AS Message
END
ELSE
BEGIN
CREATE DATABASE [New_Database]
SELECT 'New Database is Created'
END