确定没有sysadmin权限的所有数据库的用户和角色

时间:2017-10-30 10:54:40

标签: sql-server user-roles

我们正在创建一个工具,用于映射所有SQL服务器的每个数据库的所有登录,用户和角色。我们希望定期执行此操作并比较结果以深入了解更改。

最初我们从exec sp_MSloginmappings开始,但是我们需要一个具有sysadmin角色的用户。

然后我们查询了sys.database_principles。但除非我们授予ALTER ANY USERALTER ANY ROLE权限,否则我们只能看到自己的用户。

  

任何用户都可以看到自己的用户名,系统用户和固定数据库角色。要查看其他用户,需要ALTER ANY USER或用户权限。要查看用户定义的角色,需要ALTER ANY ROLE或角色成员资格。

https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql

我们认为ALTER ANY USER / ROLE权限对于我们的用例而言过于宽泛。

我们考虑的最后一个选项是创建一个存储过程,使用sys.database_principlesdbo作为WITH EXECUTE AS进行查询。这可以工作,但要求存储过程存在于每个数据库中。考虑到用例,这也不理想。

实现这一目标的好方法是什么?

谢谢大家!!

0 个答案:

没有答案