2017-02-01 10 views
0

Ich habe eine Aufgabe, die Benutzerabstimmung zu bekommen, wo wir rund 50 SQL-Server haben, muss ich die Liste der Datenbankbenutzer von allen SQL-Servern an einem Ort nehmen und es an Mannschaft. Irgendwelche Ideen werden hilfreich sein und ich habe auch SCOM-Server.Liste aller SQL-Benutzer von mehreren Servern

Antwort

0

Ich kenne keine schnelle oder andere Art, aber Sie tun können:

;with ServerPermsAndRoles as 
(
    select 
     spr.name as principal_name, 
     spr.type_desc as principal_type, 
     spm.permission_name collate SQL_Latin1_General_CP1_CI_AS as security_entity, 
     'permission' as security_type, 
     spm.state_desc 
    from sys.server_principals spr 
    inner join sys.server_permissions spm 
    on spr.principal_id = spm.grantee_principal_id 
    where spr.type in ('s', 'u') 

    union all 

    select 
     sp.name as principal_name, 
     sp.type_desc as principal_type, 
     spr.name as security_entity, 
     'role membership' as security_type, 
     null as state_desc 
    from sys.server_principals sp 
    inner join sys.server_role_members srm 
    on sp.principal_id = srm.member_principal_id 
    inner join sys.server_principals spr 
    on srm.role_principal_id = spr.principal_id 
    where sp.type in ('s', 'u') 
) 
select * 
from ServerPermsAndRoles 
order by principal_name 

https://msdn.microsoft.com/en-us/library/ms187328.aspx

Auf jedem der Server und stopfen die Ergebnisse in einer einzigen Excel-Tabelle - dann mit Excel, filtern Sie nur eindeutige Einträge.

+0

Vielen Dank für Ihre schnelle Antwort und Hilfe, erhalten diese Abfrage die Benutzerdetails aller SQL-Server, die verfügbar sind? –

+0

Meine genaue Anforderung ist, ich habe 50 SQL-Server, ich muss ein Skript entweder Poweshell oder SSMS ausführen, wo ich alle Datenbankbenutzerdetails in der lokalen Festplatte als CSV –

+0

erhalten Sie erhalten die Benutzer für einen einzelnen Server. Das heißt, Sie müssten den Code auf jedem Server ausführen - in Ihrem Fall also 50 Mal. Leider kenne ich keinen magischen Weg, auf Server zuzugreifen, es sei denn, alle 50 sind über eine Konfiguration mit einem verbundenen Server zugänglich - aber selbst dann müssen Sie das Skript wahrscheinlich 50 Mal ausführen. Vielleicht können Sie, wenn Sie Zugriff auf einen Entwickler haben, etwas anstoßen, wo Sie die Server in einer Konfigurationsdatei deklarieren können, und das Skript wird automatisch für jeden Server ausgeführt? - wirklich nur nützlich, wenn es eine regelmäßige Anfrage sein wird. – Scott

Verwandte Themen