发布于 2012-05-13 08:51:15
如果不使用参数调用函数,则它们都将返回相同的值。但他们确实采取了不同的论点:
varbinary(85) SID
作为参数integer principal_id
您可以验证如下所示:
select suser_name(principal_id)
, suser_name(sid)
, suser_sname(principal_id)
, suser_sname(sid)
from sys.server_principals
where name = suser_name()
只有第一列和最后一列将返回非空值。
发布于 2017-11-13 18:44:40
SUSER_NAME()将返回与sys.server_principals中存在的sid关联的名称。sid必须存在于sys.server_principals中。
SUSER_SNAME()可以这样做,但如果登录名是活动目录组的成员,也可以返回登录的sid。
因此,如果Active Directory中有CONTOSO\MyGroup,并且该组有一个用户CONTOSO\MyUser
然后将该组添加到Server中:从WINDOWS创建登录CONTOSO\MyGroup;
选择SUSER_ID('CONTOSO\MyUser'),SUSER_SID('CONTOSO\MyUser')
将给出NULL,CONTOSO\MyUser,因为CONTOSO\MyUser不在sys.server_principals中,而是在A/D中
https://stackoverflow.com/questions/10569914
复制相似问题