1

我想扩展以下代码:

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
4

0 回答 0