2

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

当我使用 sys.server_principals 或 sys.sysmembers 系统视图时,它不会列出所有出现在 SQL Server Management Studio 对象浏览器中的 Security -> Users 列表下的用户。

这是我尝试的:

USE [Database_Name];

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

USE [Database_Name];

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

谢谢!

4

1 回答 1

3

您不应该使用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_SCHEMAdbopublic之类的内容sys。但是,它不包括sa不需要明确定义主体的对数据库具有固有权限的帐户。

于 2013-03-05T15:33:59.877 回答