Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

W SQL Server 2005, jak mogę napisać zapytanie, aby wyświetlić wszystkie loginy, ich role serwera, odpowiadającego użytkownika we wszystkich db, role db?

Nie możesz mieć jednej listy zapytań dla wszystkich baz danych, ponieważ lista jest dynamiczna. Najlepszym rozwiązaniem jest użycie sp_msforeachdb i zbuduj wynik wsadowo i zwróć go:

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;

Możesz rozszerzyć to, aby objąć role serwera i członkostwo ról bazy danych po ustaleniu odpowiedniego kształtu zestawu wyników, aby zagregować wszystkie te informacje w jednej tabeli.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj nazwę miesiąca na numer miesiąca w SQL Server

  2. Jak utworzyć tabelę Temp za pomocą SELECT * INTO tempTable FROM CTE Query

  3. Wybierz saldo bieżące z kolumn debetowych w tabeli

  4. Część czasowa pola DateTime w SQL

  5. Utworzyć użytkownika dla SQL Server 2008?