2013-03-05 2 views
1

특정 데이터베이스의 모든 사용자를 나열하고 싶습니다.특정 데이터베이스에서 모든 사용자 나열

sys.server_principals 또는 sys.sysmembers 시스템 뷰를 사용할 때 SQL Server Management Studio의 개체 브라우저에있는 보안 -> 사용자 목록 아래에 나타나는 모든 사용자를 나열하지 않습니다.

는 여기에 내가 시도 것입니다 :

USE [Database_Name]; 

SELECT user_name([memberuid]) as [Username] 
FROM [sys].[sysmembers]; 

USE [Database_Name]; 

SELECT [name] 
FROM [sys].[server_principals]; 

감사합니다!

+0

[지정된 역할을 가진 모든 데이터베이스 사용자 목록 가져 오기] (http://stackoverflow.com/questions/3361778/get-list-of-all-database-users-with-specified-role) –

답변

2

이에 대한 sysmembers 또는 sysusers를 사용해서는 안 - 모든 sys___ 뷰는 이전 버전과의 호환성 전망이며, (A) 어떤 시점 및 (b)는 반드시 최신 정보가 포함되지 않습니다에서 제품에서 제외 될 것입니다.

데이터베이스 주체를 찾으려면 sys.server_principals을 보지 말고 sys.database_principals을보십시오.

USE your_database; 
GO 

SELECT name, create_date, type_desc 
    FROM sys.database_principals 
    WHERE is_fixed_role = 0; 

guest, INFORMATION_SCHEMA, dbo, publicsys 등이 포함됩니다. 그러나 명확한 principal을 정의 할 필요없이 데이터베이스에 대한 고유 한 권한을 가지고있는 sa과 같은 계정은 포함하지 않습니다.

+0

감사합니다. ! 나는 이제 약간의 멍청한 느낌이 든다 :-) – Robin

+0

+1 나는 원래'sysusers'를 제안했다, 나는 방금 체크했고 [docs] (http://msdn.microsoft.com/en-us/library/ms179871 .aspx)는 하위 호환성을 위해서만 존재한다고 말합니다. Aaron은 물론 정확합니다.이 시스템보기는 (더 새로운) 대체품입니다. – Bridge

관련 문제