如何确定SQL Server数据库的通过C#用户的有效权限?(How to determine th

2019-08-01 06:27发布

当我说的有效权限,我指的是所列出的权限,当你进入在SQL Server Management Studio创建数据库的属性,点击“权限”,然后单击“有效”的标签。

到目前为止,我已经能够确定与下面的代码明确权限:

using Microsoft.SqlServer.Management.Smo;
...
DatabasePermissionInfo[] permissions = database.EnumDatabasePermissions("username");

不过,我仍然需要得到有效的权限。 在这种情况下,我加入了一个用户登录并赋予它的作用db_datareaderdb_datawriter通过用户映射数据库。

在数据库的权限,列出的有效权限是CONNECT, DELETE, INSERT, SELECT,UPDATE ,但明确权限只列出连接(这是上面的代码拉回唯一)。 那么,有没有一种方法以编程方式检索的有效权限呢?

谢谢。

Answer 1:

我相信你可以打电话sys.fn_my_permissions

execute as user = 'SomeUserName' -- Set this to the user name you wish to check
select * from fn_my_permissions(null, 'DATABASE') -- Leave these arguments, don't change to MyDatabaseName
order by subentity_name, permission_name
revert

这给了我同样的结果正如你所提到的SSMS选项。



Answer 2:

貌似sys.database_principalssys.database_permissions在他们这个一些不错的信息。 这个线程: SQL Server查询找到数据库中的所有用户的所有权限/访问进一步谈论它。

注:我假设C#调用到数据库是可以接受的解决方案。



文章来源: How to determine the effective permissions for a user of a SQL Server database through C#?