对同一检查的多个查询给出不同的结果 - SQL

时间:2013-05-05 06:53:03

标签: sql sql-server sql-server-2008-r2

在SQL Server中,我有AD用户使用' sysadmin'作用。

执行查询时

 SELECT IS_SRVROLEMEMBER ('SYSADMIN', 'Domain\agarwals')

输出为0。但是当我删除用户名并执行查询

 SELECT IS_SRVROLEMEMBER ('SYSADMIN')

输出为1

enter image description here

以前有人遇到过这个吗?有人可以帮我理解为什么来自不同查询的相同检查会给出不同的输出。

3 个答案:

答案 0 :(得分:1)

这是因为'Domain \ agarwals'不是sysadmin角色的一部分。

如果没有为登录指定值,则结果基于当前的执行上下文。因此,您似乎是sysadmin角色的成员,因此输出为1

答案 1 :(得分:0)

在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不是sysadmin角色的成员。

答案 2 :(得分:0)

最后我得到了答案。

执行查询时

  

SELECT IS_SRVROLEMEMBER('SYSADMIN','Domain \ agarwals')

我的本地(未连接到域)输出上的

是0但是当我连接到VPN以连接到域时,输出为1.

的输出
  

SELECT IS_SRVROLEMEMBER('SYSADMIN')

无论我的机器是否连接到域,

始终为1。

奇怪但真实。