如何确定用户是否是非固定sql数据库角色的成员

时间:2012-03-23 21:44:25

标签: sql-server sql-server-2008 security

执行以下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。

1 个答案:

答案 0 :(得分:0)

事实证明,sp_helplogins会在所有数据库中返回结果。这就是为什么这个角色出现的时候,如果它像我之前想的那样被限制在当前的数据库中,那就不应该出现了。

无论出于何种原因,我都没有注意到这一点,并认为该条目适用于WSS_Content。相反,它来自SharePoint_Config数据库。毕竟错误是正确的,并且我正在寻找的数据库上没有该名称的作用。我只是感到困惑。