列出特定数据库上的所有用户

时间:2013-03-05 15:17:00

标签: sql-server tsql

我想列出特定数据库中的所有用户。

当我使用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];

谢谢!

1 个答案:

答案 0 :(得分: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之类的帐户,这些帐户对数据库具有固有的权限,而无需定义明确的主体。

相关问题