¿Cómo verificar si existe una base de datos en SQL Server?

¿Cuál es la forma ideal de verificar si existe una base de datos en un servidor SQL utilizando TSQL? Parece que existen múltiples enfoques para implementar esto.

Del guión de 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 realidad, es mejor usar:

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

Consulte 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... 

Por cierto, esto vino directamente de SQL Server Studio, por lo que si tiene acceso a esta herramienta, le recomiendo que empiece a jugar con las diversas funciones “Script xxxx AS” que están disponibles. Hará tu vida más fácil! 🙂

Me gusta la respuesta de @ Eduardo y me gustó la respuesta aceptada. Me gustaría obtener un booleano de algo así, así que lo escribí para ustedes.

 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 

Ahora puedes usarlo así:

 select [dbo].[DatabaseExists]('master') --returns 1 select [dbo].[DatabaseExists]('slave') --returns 0 

PRUEBA ESTO

 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