0

我有一个可以登录 sql server 的用户。现在我需要在数据库中添加用户,但是我不确定该用户是否已经存在于数据库中。所以我需要脚本,它检查用户是否存在于数据库中,如果不存在,它应该将该用户添加到该数据库中。

我怎样才能做到这一点?

4

4 回答 4

1

您不能有重复的用户,因此您可以尝试创建它并处理错误(如果它已经存在)。

于 2010-01-06T19:43:33.840 回答
1

查看用户目录视图,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');

请注意,用户可能已经通过组和角色成员资格访问,但这是一个单独的主题。

于 2010-01-06T19:49:53.960 回答
1

我认为这有效:

IF DATABASE_PRINCIPAL_ID('login') IS NULL
BEGIN
CREATE USER [username] FOR LOGIN [login]
END

^ 这仅适用于数据库中的用户名与登录名相同的情况。

于 2010-01-06T19:53:57.150 回答
0

做 a SELECT COUNT(*),看看你得到的是 0 还是 1。

于 2010-01-06T19:42:41.067 回答