执行以下sql:
USE [WSS_Content]
EXEC sp_helplogins
返回两个结果集,在第二个结果集中,我得到几行但特别是一行,如下所示:
LoginName DBName UserName UserOrAlias
DEMO\SPUser SharePoint_Config SharePoint_Shell_Access MemberOf
这是预期的,也是我想看到的。但是执行以下sql:
EXEC sp_helprole 'SharePoint_Shell_Access'
给我一个错误,上面写着:'SharePoint_Shell_Access'不是角色。但它确实存在!我可以看到它来自SQL Server Management Studio,它甚至可以直接向我展示角色的成员。
理想情况下,我想要完成的是能够使用它:
SELECT IS_MEMBER('SharePoint_Shell_Access')
但当然,这会返回null,因为它也认为当它绝对是一个有效的角色时。给出了什么,以及如何最好地查询给定用户(或当前用户)是否是此自定义数据库角色的成员?
我正在运行SQL Server 2008 R2。
答案 0 :(得分:0)
事实证明,sp_helplogins会在所有数据库中返回结果。这就是为什么这个角色出现的时候,如果它像我之前想的那样被限制在当前的数据库中,那就不应该出现了。
无论出于何种原因,我都没有注意到这一点,并认为该条目适用于WSS_Content。相反,它来自SharePoint_Config数据库。毕竟错误是正确的,并且我正在寻找的数据库上没有该名称的作用。我只是感到困惑。