2010-01-27 45 views
7

我使用SQL 2000和SQL 2005TSQL知道數據庫角色成員

我想知道哪些登錄具有的db_owner或db_accessadmin權利到數據庫。

我可以點擊每個數據庫中的用戶或數據庫角色來查看。 使用TSQL可以以更簡單的方式完成嗎?

在此先感謝

回答

18

對於SQL 2000和仍然可以工作,2005年太

SELECT 
    USER_NAME(memberuid), USER_NAME(groupuid) 
FROM 
    sys.sysmembers 
WHERE 
    USER_NAME(groupuid) IN ('db_owner', 'db_accessadmin') 
SQL
+1

非常感謝。並運行它在我做的所有數據庫中: EXEC SP_MSFOREACHDB'USE [?]; SELECT \t \t \t \t DB_NAME(),USER_NAME(memberuid),USER_NAME(groupuid) \t \t \t \t FROM \t \t \t \t sysmembers \t \t \t \t WHERE \t \t \t \t USER_NAME(groupuid)IN( '' db_owner'',''db_accessadmin'') \t \t \t \t和user_name(memberuid)不喜歡''%dbo%''' – Manjot

+0

對不起,我在我的本地SQL Server中做了這些,但忘了發佈它! – gbn

3

這是草率的,有可能是一個更好的辦法,但如果這是一個一次性的事情這應該完成它:

DECLARE 
    @db_name SYSNAME, 
    @sql VARCHAR(1000) 

DECLARE db_cursor CURSOR FOR SELECT Name FROM sys.databases 
OPEN db_cursor 

FETCH NEXT FROM db_cursor INTO @db_name 

WHILE (@@FETCH_STATUS = 0) 
BEGIN 
    SET @sql = 
     'SELECT 
      ''' + @db_name + ''' AS [Database], 
      USER_NAME(role_principal_id) AS [Role], 
      USER_NAME(member_principal_id) AS [User] 
     FROM 
      ' + @db_name + '.sys.database_role_members 
     WHERE 
      USER_NAME(role_principal_id) IN (''db_owner'', ''db_accessadmin'')' 
    EXEC(@sql) 

    FETCH NEXT FROM db_cursor INTO @db_name 
END 

CLOSE db_cursor 
DEALLOCATE db_cursor 

的SQL 2000的版本應該是:

DECLARE 
    @db_name SYSNAME, 
    @sql VARCHAR(1000) 

DECLARE db_cursor CURSOR FOR SELECT Name FROM master..sysdatabases 
OPEN db_cursor 

FETCH NEXT FROM db_cursor INTO @db_name 

WHILE (@@FETCH_STATUS = 0) 
BEGIN 
    SET @sql = 
     'SELECT 
      ''' + @db_name + ''' AS [Database], 
      USER_NAME(memberuid) AS [Role], 
      USER_NAME(groupuid) AS [User] 
     FROM 
      sysmembers 
     WHERE 
      USER_NAME(groupuid) IN (''db_owner'', ''db_accessadmin'')' 
    EXEC(@sql) 

    FETCH NEXT FROM db_cursor INTO @db_name 
END 

CLOSE db_cursor 
DEALLOCATE db_cursor 
+0

thanKS。 如何在SQL 2000中運行它? – Manjot

+0

在SQL Server 2000中不起作用... – gbn

相關問題