小编ano*_*002的帖子

如何获取所有实例数据库上的用户列表?不包括镜子!

为了审计我们的 MSSQL 数据库,我被要求提供每个实例上运行的每个数据库的所有用户的列表。

有一个现有的 s粘性溢出问题

建议使用...

exec sp_MSforeachdb 'select * from ?.sys.sysusers'
Run Code Online (Sandbox Code Playgroud)

但是,它遇到了一些问题。

1) 如果任何数据库是镜像,脚本会出现如下错误并且不返回任何结果。

"The database "###" cannot be opened. It is acting as a mirror database."
Run Code Online (Sandbox Code Playgroud)

2) 如果任何数据库的名称中包含特殊字符(例如连字符 -),则会再次出错并且不返回结果。

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '-'.
Run Code Online (Sandbox Code Playgroud)

3) 结果都在单独的表格中。理想情况下,我希望它只输出 1 个数据库和用户表。

任何人都可以帮助调整代码以实现上述目标吗?

谢谢

sql-server ssms t-sql

4
推荐指数
1
解决办法
197
查看次数

标签 统计

sql-server ×1

ssms ×1

t-sql ×1