admin

为什么我不能在SQL Management Studio的开始/结束块中使用“创建架构”?

sql

我生成了一个脚本,该脚本为该数据库创建了所有用户和模式,当我用IF EXISTS检查包装CREATE语句时,我发现它不允许CREATE
SCHEMA调用在BEGIN / END块中运行。它抱怨说这是无效的语法。但是我可以自己运行命令。下面是代码示例。我正在使用SQL Server
2008和Management Studio R2。为什么此语法无效?

--DROP SCHEMA [acme]

IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'acme')) 
BEGIN
    CREATE SCHEMA [acme] AUTHORIZATION [dbo]
END

阅读 159

收藏
2021-05-10

共1个答案

admin

模式创建必须是批处理中唯一的语句。解决它的一种方法是这样的:

IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'acme')) 
BEGIN
    EXEC ('CREATE SCHEMA [acme] AUTHORIZATION [dbo]')
END
2021-05-10