Câu trả lời:
Từ một tập lệnh của 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'
Trên thực tế, tốt nhất nên sử dụng:
IF DB_ID('dms') IS NOT NULL
--code mine :)
print 'db exists'
Xem https://docs.microsoft.com/en-us/sql/t-sql/fifts/db-id-transact-sql
[master]
[ ]
trong cuộc gọi đến db_id
; đó là cú pháp SQL, không phải là một phần của tên cơ sở dữ liệu.
IF EXISTS (SELECT name FROM master.sys.databases WHERE name = N'YourDatabaseName')
Do your thing...
Nhân tiện, điều này đến trực tiếp từ SQL Server Studio, vì vậy nếu bạn có quyền truy cập vào công cụ này, tôi khuyên bạn nên bắt đầu chơi với các chức năng "Script xxxx AS" khác nhau có sẵn. Sẽ làm cho cuộc sống của bạn dễ dàng hơn! :)
Tôi thích câu trả lời của @ Eduardo và tôi thích câu trả lời được chấp nhận. Tôi muốn lấy lại một boolean từ một cái gì đó như thế này, vì vậy tôi đã viết nó lên cho các bạn.
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
Bây giờ bạn có thể sử dụng nó như thế này:
select [dbo].[DatabaseExists]('master') --returns 1
select [dbo].[DatabaseExists]('slave') --returns 0