指定域登录时,IS_SRVROLEMEMBER返回0

问题描述 投票:0回答:1

我有一个安装程序运行的sql脚本,以确定当前用户是否是连接数据库的sys管理员。由于某种原因,指定登录会使脚本失败。

我现在无法更改脚本,因此我想知道可能导致此行为的原因,该脚本与其他计算机没有问题。该脚本在sql server 2012 express上运行。

这是脚本:

SELECT IS_SRVROLEMEMBER('sysadmin'),IS_SRVROLEMEMBER('sysadmin','domain\user')

该脚本将分别返回1和0。我想知道为什么脚本的第二部分返回0。

提前致谢!

更新我运行此脚本时以域\用户身份登录,因此它们应该返回0或1.而不是1和0

更新2似乎sql server服务无法访问域控制器。查询本地用户时,查询返回1。

我的新问题是,当我可以作为域用户登录sql server时,为什么sql server服务无法联系域控制器以获取IS_SRVROLEMEMBER查询。

tsql sql-server-2012 sql-server-express domaincontroller
1个回答
0
投票

根据Microsoft Docs:

返回值0:login不是角色的成员。

其中一个原因是用户登录被更改或删除。

参考:

https://docs.microsoft.com/en-us/sql/t-sql/functions/is-srvrolemember-transact-sql?view=sql-server-2017

更新

enter image description here

当我以'AD \ j2wan'身份登录时,我使用该函数检查登录'test'是否是该角色的成员。

然后我得到1和0。

如果它有sysadmin,你可以仔细检查你使用的登录名和登录服务器角色吗?

© www.soinside.com 2019 - 2024. All rights reserved.