如何区分单个数据库中的系统和用户定义的角色?

Cla*_*ude 2 sql-server-2008 role users

有没有办法区分系统角色/用户和用户定义的角色/用户?作为系统角色/用户,我了解在创建数据库时隐式安装/分配的角色/用户。作为用户定义的角色/用户,我理解之后“手动”创建的角色/用户。

我发现的唯一方法是查看结果

select * from sys.database_principals order by create_date, is_fixed_role desc
Run Code Online (Sandbox Code Playgroud)

或者通过将结果与新创建的数据库进行比较。还有其他方法吗?

Sal*_*r L 5

sys.database_principals 上的“is_fixed_role”列是您的答案,请查看MS 文档

如果为 1,则该行代表以下固定数据库角色之一的条目:db_owner、db_accessadmin、db_datareader、db_datawriter、db_ddladmin、db_securityadmin、db_backupoperator、db_denydatareader、db_denydatawriter。

只需使用

SELECT * FROM sys.database_principals WHERE [type]='R' and [is_fixed_role]=1
Run Code Online (Sandbox Code Playgroud)