我有一个安装程序运行的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查询。
根据Microsoft Docs:
返回值0:login不是角色的成员。
其中一个原因是用户登录被更改或删除。
参考:
更新
当我以'AD \ j2wan'身份登录时,我使用该函数检查登录'test'是否是该角色的成员。
然后我得到1和0。
如果它有sysadmin,你可以仔细检查你使用的登录名和登录服务器角色吗?