我有一个用户 John.Smith,我想知道他也有db_owner
什么数据库以及他没有什么数据库db_owner
。有我可以运行的脚本吗?我们有很多数据库,当我查看用户地图时,我觉得我可能看多了一些东西。
问问题
2448 次
1 回答
2
你可以使用类似的东西:
CREATE TABLE ##DBOwners
(
DBName SYSNAME,
Username SYSNAME,
Rolename NVARCHAR(50),
IsOwner BIT
);
EXEC sp_MSforeachdb
'
USE [?];
INSERT INTO ##DBOwners
SELECT
DB_NAME(),
dp.name,
dp2.name,
CASE
WHEN dp2.name = ''db_owner'' THEN 1
ELSE 0
END AS ''db_owner''
FROM
sys.database_principals AS dp
LEFT JOIN
sys.database_role_members AS rm
ON
rm.member_principal_id = dp.principal_id
LEFT JOIN
sys.database_principals AS dp2
ON
rm.role_principal_id = dp2.principal_id
WHERE
dp.type <> ''R''
'
SELECT * FROM ##DBOwners WHERE Username = 'John.Smith'
DROP TABLE ##DBOwners;
它通过使用存储过程 sp_MSforeachdb 收集有关所有数据库的信息并将结果保存在全局临时表中。
于 2013-02-14T23:20:24.020 回答