Мне нравится ответ @ Эдуардо, и мне понравился принятый ответ. Мне нравится возвращать логическое значение от чего-то подобного, поэтому я написал это для вас, ребята.
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