sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan kan jeg i SQL Server 2005 skrive en forespørgsel for at vise alle login, deres serverrolle, korresponderende bruger i alle db, db-roller?

Du kan ikke have én forespørgselsliste over alle databaser, fordi listen er dynamisk. Dit bedste bud er at bruge sp_msforeachdb og få en batch til at konstruere resultatet og returnere det:

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;

Du kan udvide dette til at omfatte serverroller og databaserollemedlemskaber, når du finder ud af en korrekt resultatsætform for at samle al den information i en enkelt tabel.



  1. Indstilling af tidsgrænse php

  2. PostgreSql INDSÆT FRA VÆLG RETURNERING ID

  3. Indsæt og sæt værdi med max()+1 problemer

  4. Fjernforbindelser Mysql Ubuntu - bindingsadresse mislykkedes