Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 确定没有系统管理员权限的所有数据库的用户和角色_Sql Server_User Roles - Fatal编程技术网

Sql server 确定没有系统管理员权限的所有数据库的用户和角色

Sql server 确定没有系统管理员权限的所有数据库的用户和角色,sql-server,user-roles,Sql Server,User Roles,我们正在创建一个工具,用于映射所有SQL Server的每个数据库的所有登录名、用户和角色。我们希望定期这样做,并比较结果,以便深入了解变化 最初我们从exec sp_MSloginmappings开始,但是我们需要一个具有sysadmin角色的用户 然后我们查询了sys.database\u principles。但是我们只能看到自己的用户,除非我们授予alteranyuser和alteranyrole权限 任何用户都可以看到自己的用户名、系统用户和固定数据库角色。要查看其他用户,需要更改任何

我们正在创建一个工具,用于映射所有SQL Server的每个数据库的所有登录名、用户和角色。我们希望定期这样做,并比较结果,以便深入了解变化

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

然后我们查询了
sys.database\u principles
。但是我们只能看到自己的用户,除非我们授予
alteranyuser
alteranyrole
权限

任何用户都可以看到自己的用户名、系统用户和固定数据库角色。要查看其他用户,需要更改任何用户,或对该用户具有权限。要查看用户定义的角色,需要更改任何角色或角色中的成员身份

我们认为<代码>更改任何用户/角色< /代码>权限对于我们的用例来说太过广泛。p> 我们考虑的最后一个选项是创建一个存储过程,通过使用

和EXECUTE as
来查询
sys.database\u principles
as
dbo
。这是可行的,但要求存储过程存在于每个数据库中。考虑到用例,这也不理想

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

谢谢大家