我有一个可以登录 sql server 的用户。现在我需要在数据库中添加用户,但是我不确定该用户是否已经存在于数据库中。所以我需要脚本,它检查用户是否存在于数据库中,如果不存在,它应该将该用户添加到该数据库中。
我怎样才能做到这一点?
我有一个可以登录 sql server 的用户。现在我需要在数据库中添加用户,但是我不确定该用户是否已经存在于数据库中。所以我需要脚本,它检查用户是否存在于数据库中,如果不存在,它应该将该用户添加到该数据库中。
我怎样才能做到这一点?
您不能有重复的用户,因此您可以尝试创建它并处理错误(如果它已经存在)。
查看用户目录视图,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');
请注意,用户可能已经通过组和角色成员资格访问,但这是一个单独的主题。
我认为这有效:
IF DATABASE_PRINCIPAL_ID('login') IS NULL
BEGIN
CREATE USER [username] FOR LOGIN [login]
END
^ 这仅适用于数据库中的用户名与登录名相同的情况。
做 a SELECT COUNT(*)
,看看你得到的是 0 还是 1。