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