2013-03-05 83 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) – 2013-03-05 15:22:04

回答

2

你不應該使用sysmemberssysusers此 - 所有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; 

這將包括像guestINFORMATION_SCHEMAdbopublicsys。但是它不包括像sa這樣的帳戶,它們對數據庫具有固有的權限,而不需要定義明確的主體。

+0

謝謝!我覺得現在有點小菜了:-) – Robin 2013-03-05 15:36:03

+0

+1我最初建議'sysusers',我剛剛檢查過並且[docs](http://msdn.microsoft.com/zh-cn/library/ms179871 .aspx)說它只是爲了向後兼容。 Aaron當然是正確的 - 這些系統視圖是(更新的)替換。 – Bridge 2013-03-05 15:37:41

相關問題