检查 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
我正在处理具有多个数据库的项目。数据库可能不存在。在我 运行 查询 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