Comment vérifier si une base de données existe dans SQL Server?

Quel est le moyen idéal pour vérifier si une base de données existe sur un serveur SQL utilisant TSQL? Il semble que plusieurs approches pour mettre en œuvre cela.

216
demandé sur Ray Vega 2009-03-24 22:56:11

5 réponses

À partir d'un script Microsoft:

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'
131
répondu eKek0 2012-06-08 13:50:40

En Fait, il est préférable d'utiliser:

if db_id('dms') is not null
   --code mine :)
   print 'db exists'

Voir https://docs.microsoft.com/en-us/sql/t-sql/functions/db-id-transact-sql

441
répondu Eduardo 2017-12-24 19:43:53
IF EXISTS (SELECT name FROM master.sys.databases WHERE name = N'YourDatabaseName')
  Do your thing...

En passant, cela vient directement de SQL Server Studio, donc si vous avez accès à cet outil, je vous recommande de commencer à jouer avec les différentes fonctions "Script xxxx AS" qui sont disponibles. Rendra votre vie plus facile! :)

33
répondu si618 2013-02-27 00:03:57

J'aime la réponse de @ Eduardo et j'ai aimé la réponse acceptée. J'aime récupérer un booléen de quelque chose comme ça, alors je l'ai écrit pour vous les gars.

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

Maintenant, vous pouvez l'utiliser comme ceci:

select [dbo].[DatabaseExists]('master') --returns 1
select [dbo].[DatabaseExists]('slave') --returns 0
4
répondu Don Rolling 2016-12-14 20:36:15

ESSAYEZ CECI

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
répondu Kovid Purohit 2018-05-09 11:53:40