我想扩展以下代码:
create user someUser from login someLogin;
这样,如果我重新执行脚本,就不会收到错误消息告诉我用户已经存在。
我已经尝试过以下方法。
select
case
(
select count(*) from sys.database_principals
where name = 'someUser'
)
when 0 then 'create'
else 'skip'
end
但这只会选择字符串。我想要一些被执行的东西。但是,我收到错误消息,然后告诉我 select 附近有问题。因此,以下内容不可行,我不确定该怎么做。
case
(
select count(*) from sys.database_principals
where name = 'someUser'
)
when 0 then (create user someUser from login someLogin)
end
编辑:
下面的代码告诉我,用户的创建必须是批处理中的唯一命令。我被虚张声势,因为它是那里唯一的一个。另外,如何规避这个问题呢?
if not exists(select 1 from sys.database_principals where name = 'someUser')
create user reader from login someLogin;
go