为了审计我们的 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 个数据库和用户表。
任何人都可以帮助调整代码以实现上述目标吗?
谢谢