Bonjour à tous,
Je dois écrire un script listant tous les logins/users et leurs droits associés de tous les serveurs SQL-Server sous forme d'un PowerShell par exemple.
Merci par avance pour votre aide.
Patricia77360
Version imprimable
Bonjour à tous,
Je dois écrire un script listant tous les logins/users et leurs droits associés de tous les serveurs SQL-Server sous forme d'un PowerShell par exemple.
Merci par avance pour votre aide.
Patricia77360
Bonjour,
Vous pouvez créer un serveur d'administration centralisée : https://msdn.microsoft.com/en-us/library/bb934126.aspx et exécuter cette requête sur tous les serveurs :
Code:
1
2
3
4
5 SELECT * FROM sys.database_principals princ LEFT JOIN sys.database_permissions perm ON perm.grantee_principal_id = princ.principal_id
Merci pour votre retour rapide. Malheureusement, j'obtiens un résultat avec, pour la colonne "name", x fois la même infnormation (+ de 2000 enregistrements) ce qui ne convient pas à ce que je dois sortir comme résultat.
Bien cordialement,
Patricia77360
Bonjour,
Essayez cela:
http://stackoverflow.com/questions/7...-in-a-databaseCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 SELECT [UserName] = ulogin.[name], [UserType] = CASE princ.[type] WHEN 'S' THEN 'SQL User' WHEN 'U' THEN 'Windows User' WHEN 'G' THEN 'Windows Group' END, [DatabaseUserName] = princ.[name], [Role] = null, [PermissionType] = perm.[permission_name], [PermissionState] = perm.[state_desc], [ObjectType] = CASE perm.[class] WHEN 1 THEN obj.type_desc -- Schema-contained objects ELSE perm.[class_desc] -- Higher-level objects END, [ObjectName] = CASE perm.[class] WHEN 1 THEN OBJECT_NAME(perm.major_id) -- General objects WHEN 3 THEN schem.[name] -- Schemas WHEN 4 THEN imp.[name] -- Impersonations END, [ColumnName] = col.[name] FROM --database user sys.database_principals princ LEFT JOIN --Login accounts sys.server_principals ulogin on princ.[sid] = ulogin.[sid] LEFT JOIN --Permissions sys.database_permissions perm ON perm.[grantee_principal_id] = princ.[principal_id] LEFT JOIN --Table columns sys.columns col ON col.[object_id] = perm.major_id AND col.[column_id] = perm.[minor_id] LEFT JOIN sys.objects obj ON perm.[major_id] = obj.[object_id] LEFT JOIN sys.schemas schem ON schem.[schema_id] = perm.[major_id] LEFT JOIN sys.database_principals imp ON imp.[principal_id] = perm.[major_id] WHERE princ.[type] IN ('S','U','G') AND -- No need for these system accounts princ.[name] NOT IN ('sys', 'INFORMATION_SCHEMA')