sql >> Database >  >> RDS >> Sqlserver

Hoe kan ik in SQL Server 2005 een query schrijven om alle aanmeldingen, hun serverrol, corresponderende gebruiker in alle db-, db-rollen weer te geven?

U kunt niet met één query alle databases weergeven, omdat de lijst dynamisch is. Je kunt het beste gebruik maken van sp_msforeachdb en laat een batch het resultaat construeren en retourneren:

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;

U kunt dit uitbreiden om de serverrollen en lidmaatschappen van databaserollen op te nemen zodra u een juiste resultaatsetvorm hebt gevonden om al die informatie in een enkele tabel samen te voegen.



  1. Rails Resque-werknemers mislukken met PGError:server heeft de verbinding onverwacht gesloten

  2. Functie zoals USE om naar een SQL-database op een andere server te verwijzen?

  3. Keer de natuurlijke volgorde van een MySQL-tabel om zonder ORDER BY?

  4. Django 500 interne serverfout - onjuist geconfigureerd:fout bij het laden van de MySQLdb-module: