it-swarm.com.de

Wie prüfe ich, ob eine Datenbank in SQL Server vorhanden ist?

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.

225
Ray Vega

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'
140
eKek0

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

457
Eduardo
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! :)

33
si618

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
4
Don Rolling

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;
    }
0
Bogdan Doicin

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
0
Kovid Purohit