sql-server-2012 – 如何获取所有数据库用户的列表

我将获得所有用户的列表,包括Windows用户和“sa”,他们可以访问MS SQL Server中的特定数据库。
基本上,我希望该列表看起来像在SQL Server Management Studio中显示的内容(即当您展开[databse] – > Security – > Users)时显示的列表)有一个重要的例外:我不想在列表中看到’dbo’。相反,我想看到拥有数据库的实际用户。所以,例如,如果’sa’是’dbo’,’sa’必须包含在列表中,而不是’dbo’。另外一个不容错过的注意事项是,SQL Server Management Studio中的列表通常会显示Windows用户以外的SQL用户,而且我也希望这些用户也被包括在内。

到目前为止,我已经能够提出以下查询:

SELECT * FROM sys.database_principals where (type='S' or type = 'U')

这个查询几乎是正确的,但问题是它不符合’dbo’条件。

如何更改此查询或应该使用另一个?

最佳答案
对于SQL Server所有者,您应该可以使用:

select suser_sname(owner_sid) as 'Owner', state_desc, *
from sys.databases

有关SQL用户的列表:

SELECT * FROM sys.database_principals

参考文献
SQL Server Tip: How to find the owner of a database through T-SQL

How do you test for the existence of a user in SQL Server?

转载注明原文:sql-server-2012 – 如何获取所有数据库用户的列表 - 代码日志