2017-09-11 72 views
1

我的主管要求我創建一個ssrs報告(使用sql server 2008),該報告將顯示用戶有權訪問的所有數據庫名稱,並確保用戶仍然有一個活躍的帳戶。我可以查詢來自不同數據庫的用戶名,但似乎無法列出用戶有權訪問的數據庫名稱。列出用戶有權訪問的多個數據庫的數據庫名稱

有一種方法可以實現這個事件,即使有些數據庫位於不同的鏈接服務器中。

謝謝大家提前,任何幫助指向我正確的方向是高度讚賞。

回答

0
DECLARE @DBuser_table TABLE (DBName VARCHAR(200), 
     UserName VARCHAR(250), 
     LoginType VARCHAR(500), 
     AssociatedRole VARCHAR(200)) 
DECLARE @UserName VARCHAR(250) 

SET @UserName = 'dbo' --change this to desired username 

SET @DBuser_sql='SELECT ''?'' AS DBName,a.name AS Name,a.type_desc AS LoginType,USER_NAME(b.role_principal_id) AS AssociatedRole FROM ?.sys.database_principals a 
LEFT OUTER JOIN ?.sys.database_role_members b ON a.principal_id=b.member_principal_id 
WHERE a.sid NOT IN (0x01,0x00) AND a.sid IS NOT NULL AND a.type NOT IN (''C'') AND a.is_fixed_role <> 1 AND a.name NOT LIKE ''##%'' AND ''?'' NOT IN (''master'',''msdb'',''model'',''tempdb'') ORDER BY Name' 

INSERT @DBuser_table 

EXEC sp_MSforeachdb @[email protected]_sql 

SELECT * 
    FROM @DBuser_table 
WHERE username = @UserName 
ORDER BY DBName 
+0

謝謝費迪南德,我已經運行了一個,但似乎無法連接來自其他服務器的所有數據庫,這些數據庫鏈接在一起顯示用戶有權訪問的所有表。 – dran

相關問題