Не можете да имате една заявка за списък с всички бази данни, защото списъкът е динамичен. Най-добре е да използвате sp_msforeachdb
и накарайте партида да конструира резултата и да го върне:
set nocount on;
create table #result (sid varbinary(85),
server_principal_id int,
database_id int,
database_principal_id int);
exec ms_foreachdb 'insert into #result
(server_principal_id, database_id, database_principal_id)
select s.principal_id,
db_id(''?''),
d.principal_id
from sys.server_principals s
join [?].sys.database_principals d
on s.sid = d.sid;';
select * from #result;
Можете да разширите това, за да включите ролите на сървъра и ролите на базата данни, след като измислите подходяща форма на набор от резултати, за да обедините цялата тази информация в една таблица.