我想扩展以下代码:
create user someUser from login someLogin;
因此,如果我重新执行该脚本,我将不会收到错误,告诉我该用户已经存在。
我尝试了以下内容。
select
case
(
select count(*) from sys.database_principals
where name = 'someUser'
)
when 0 then 'create'
else 'skip'
end
但这只选择字符串。我想要执行某些事情。但是,我收到错误,然后告诉我在选择附近有什么问题然后。所以以下内容不会发生,我不知道该怎么做。
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