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.
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'
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
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! :)
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
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