sql >> Databáze >  >> RDS >> Sqlserver

Jak mohu v SQL Server 2005 napsat dotaz na seznam všech přihlášení, jejich role serveru, odpovídajících uživatelů ve všech rolích db, db?

Nemůžete mít jeden dotaz seznam všech databází, protože seznam je dynamický. Nejlepším řešením je použít sp_msforeachdb a nechat dávkově zkonstruovat výsledek a vrátit jej:

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;

Toto můžete rozšířit tak, aby zahrnovalo serverové role a členství v databázových rolích, jakmile zjistíte správný tvar výsledné sady pro agregaci všech těchto informací do jediné tabulky.



  1. Potíže s funkcí vyhledávání php a ajax

  2. Skupiny dostupnosti SQL Server AlwaysOn:Instalace a konfigurace. Část 2

  3. Jiná db pro testování v Django?

  4. PHP, MySQL, PDO - získat výsledek z dotazu UPDATE?