【发布时间】:2010-01-06 19:40:56
【问题描述】:
我有一个可以登录 sql server 的用户。现在我需要在数据库中添加用户,但是我不确定该用户是否已经存在于数据库中。 所以我需要脚本,它检查用户是否存在于数据库中,如果不存在,它应该将该用户添加到该数据库中。
我该怎么做?
【问题讨论】:
标签: sql-server database add
我有一个可以登录 sql server 的用户。现在我需要在数据库中添加用户,但是我不确定该用户是否已经存在于数据库中。 所以我需要脚本,它检查用户是否存在于数据库中,如果不存在,它应该将该用户添加到该数据库中。
我该怎么做?
【问题讨论】:
标签: sql-server database add
您不能有重复的用户,因此您可以尝试创建它并处理错误(如果它已经存在)。
【讨论】:
查看用户目录视图,sys.database_principals:
select * from [dbname].sys.database_principals
where name = 'loginname';
要 100% 准确,您需要通过用户的 SID 进行检查,而不是通过名称:
select * from [dbname].sys.database_principals
where sid = SUSER_SID('loginame');
请注意,用户可能已经通过组和角色成员资格获得访问权限,但这是一个单独的主题。
【讨论】:
我认为这有效:
如果 DATABASE_PRINCIPAL_ID('login') 为 NULL
开始
为登录 [登录] 创建用户 [用户名]
结束
^ 仅当数据库中的用户名与登录名相同时才有效。
【讨论】:
执行SELECT COUNT(*),看看你得到的是 0 还是 1。
【讨论】: