检查 SQL 服务器中是否存在数据库

Check If Database Exists in SQL Server

我正在处理具有多个数据库的项目。数据库可能不存在。在我 运行 查询 table 之前,我正在检查数据库是否存在。问题是我仍然得到数据库 "Courses" 不退出。我想摆脱那条消息,因为我不想让客户看到这条消息。

DECLARE @dbname nvarchar(128)
SET @dbname = N'Courses'

IF EXISTS (SELECT name 
FROM master.dbo.sysdatabases 
WHERE ('[' + name + ']' = @dbname 
OR name = @dbname))
  BEGIN
    IF NOT EXISTS (SELECT 1 FROM Courses.INFORMATION_SCHEMA.COLUMNS C WHERE C.COLUMN_NAME IN ('isAvailableOnline') AND C.TABLE_NAME IN ('Course'))
    BEGIN
       ALTER TABLE Courses.dbo.Course ADD isAvailableOnline BIT NULL
    END
  END

使用 EXEC 中可能不存在的数据库包装表达式,以便仅在采用该分支时才编译它。

我使用了一些较短的习语来检查数据库和列是否存在。如果您坚持使用现有的列,则需要将其放入 EXEC 的字符串中,引号加倍以转义它们。

DECLARE @dbname sysname
SET @dbname = N'Courses'

IF DB_ID(@dbname) IS NOT NULL
  BEGIN
    IF COL_LENGTH('Courses.dbo.Course','isAvailableOnline') IS NULL
    BEGIN
       EXEC('ALTER TABLE Courses.dbo.Course ADD isAvailableOnline BIT NULL')
    END
  END