4
我有一个用户John.Smith,我想知道他有哪些数据库db_owner
,以及他没有的数据库db_owner
。有我可以运行的脚本吗?我们有很多数据库,当我查看用户映射时,我觉得我可能会过度寻找某些东西。在每个数据库上为用户列出db_owner权限
我有一个用户John.Smith,我想知道他有哪些数据库db_owner
,以及他没有的数据库db_owner
。有我可以运行的脚本吗?我们有很多数据库,当我查看用户映射时,我觉得我可能会过度寻找某些东西。在每个数据库上为用户列出db_owner权限
您可以使用类似:
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并保存在一个全局临时表中的结果收集所有数据库的信息。
嗨,谢谢你的代码!这也会显示什么分贝John.Smith也不属于db_owner?当我运行代码时,我可以看到John.Smith属于db_owner的数据库,但它不告诉我他不属于哪个数据库 – thaibythai 2013-02-15 14:25:39
您已经标记了sql server和mysql。每个人的答案都不相同。 – 2013-02-14 23:08:43
嗨丹 - 我在SQL服务器2008 R2工作 - 正在寻找一个SQL将在2008 R2工作。谢谢! – thaibythai 2013-02-15 14:24:11