如何检查SQL Server中是否存在数据库?

使用TSQL检查数据库是否存在于SQL Server上的理想方法是什么? 似乎有多种方法来实现这一点。

从微软的脚本:

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' 

其实最好使用:

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

请参阅https://msdn.microsoft.com/en-us/library/ms186274.aspx

 IF EXISTS (SELECT name FROM master.sys.databases WHERE name = N'YourDatabaseName') Do your thing... 

顺便说一句,这是直接来自SQL Server Studio,所以如果你有权访问这个工具,我build议你开始玩各种可用的“Script xxxx AS”function。 会让你的生活更轻松! 🙂

我喜欢@爱德华多的回答,我喜欢接受的答案。 我喜欢从这样的东西找回布尔值,所以我写了给你们。

 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 

现在你可以像这样使用它:

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