2013-02-14 33 views
4

我有一個用戶John.Smith,我想知道他有哪些數據庫db_owner,以及他沒有的數據庫db_owner。有我可以運行的腳本嗎?我們有很多數據庫,當我查看用戶映射時,我覺得我可能會過度尋找某些東西。在每個數據庫上爲用戶列出db_owner權限

+0

您已經標記了sql server和mysql。每個人的答案都不相同。 – 2013-02-14 23:08:43

+0

嗨丹 - 我在SQL服務器2008 R2工作 - 正在尋找一個SQL將在2008 R2工作。謝謝! – thaibythai 2013-02-15 14:24:11

回答

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並保存在一個全局臨時表中的結果收集所有數據庫的信息。

+0

嗨,謝謝你的代碼!這也會顯示什麼分貝John.Smith也不屬於db_owner?當我運行代碼時,我可以看到John.Smith屬於db_owner的數據庫,但它不告訴我他不屬於哪個數據庫 – thaibythai 2013-02-15 14:25:39

相關問題