创建用户(如果尚不存在)

时间:2013-06-08 21:19:12

标签: sql-server azure

我想扩展以下代码:

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

0 个答案:

没有答案