检查 sql 服务器上的特定数据库中是否存在架构

Check if schema exists in a specific database on sql server

我知道你能做到this

IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'log')
BEGIN
    -- some code 
END

但是如何检查特定数据库中是否存在架构?数据库名称可用 @dbname.

第一次尝试

一个简单的解决方法是

exec ('use db_name; select schema_id(''log'')')

但是如果你想在 if 结构中使用它,你最终会得到一些丑陋的 sp_executesql 语法。那么检查特定数据库中是否存在模式的最佳方法是什么?

我会简单地做:

IF NOT EXISTS (SELECT * FROM DBName.sys.schemas WHERE name = 'log')
BEGIN
    -- some code 
END

刚刚在我的环境中试过,它有效。