在 SQL Server 中,我有具有“系统管理员”角色的 AD 用户。
当我执行查询
SELECT IS_SRVROLEMEMBER ('SYSADMIN', 'Domain\agarwals')
输出是0
。但是当我删除用户名并执行查询时
SELECT IS_SRVROLEMEMBER ('SYSADMIN')
输出是1
。
有没有人遇到过这个问题?有人可以帮我理解为什么来自不同查询的相同检查会给出不同的输出。
在 SQL Server 中,我有具有“系统管理员”角色的 AD 用户。
当我执行查询
SELECT IS_SRVROLEMEMBER ('SYSADMIN', 'Domain\agarwals')
输出是0
。但是当我删除用户名并执行查询时
SELECT IS_SRVROLEMEMBER ('SYSADMIN')
输出是1
。
有没有人遇到过这个问题?有人可以帮我理解为什么来自不同查询的相同检查会给出不同的输出。
那是因为“域\agarwals”不是系统管理员角色的一部分。
如果没有为登录指定值,则结果基于当前执行上下文。因此,您似乎是 sysadmin 角色的成员,因此输出为 1
在 msdn 上提到了http://msdn.microsoft.com/en-IN/library/ms176015.aspx
0 login is not a member of role.
1 login is a member of role.
NULL role or login is not valid, or you do not have permission to view the role membership.
您可以看到 0 表示 agarwals 不是系统管理员角色的成员。
最后我得到了答案。
当我执行查询时
SELECT IS_SRVROLEMEMBER ('SYSADMIN', 'Domain\agarwals')
在我的本地(未连接到域)上输出为 0,但是当我连接到 VPN 以连接到域时,输出为 1。
而输出为
选择 IS_SRVROLEMEMBER ('SYSADMIN')
无论我的机器是否连接到域,始终为 1。
奇怪但真实。