it-swarm.com.de

Auflisten der vorhandenen SQL Server-Anmeldungen und -Benutzer

Ich weiß, dass wir die Anmeldungen und die definierten Benutzer mithilfe der GUI in SQL Server überprüfen können, frage mich jedoch, wie wir diese Überprüfung mithilfe eines Skripts durchführen können.

Ich habe die folgende Abfrage ausgeführt, aber sie zeigt Principal_id an. Ich bin mir nicht sicher, wie ich sie zuordnen soll, um die Berechtigungsstufe zu erhalten.

SELECT * FROM Sys.login_token 

Gibt es also einen eingebauten gespeicherten Prozess, der die Anmeldungen und Benutzer auflisten kann mit ihrer Berechtigungsstufe?

Vielen Dank.

14
Sky

Sie sind sich nicht sicher, ob es einen integrierten Weg gibt, aber probieren Sie diese Abfrage für Server-Principals aus:

;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

Grundsätzlich erhält es die erteilten und verweigerten Berechtigungen und verbindet es mit der Rollenmitgliedschaft. Es sollte Ihnen einen kurzen Überblick über die Sicherheit für Serveranmeldungen geben. Lassen Sie mich wissen, ob Sie danach suchen.

14
Thomas Stringer

Versuchen Sie dies - hier werden Benutzer, Objekte und die Berechtigungen aufgelistet, die sie für diese Objekte haben:

SELECT p.name, o.name, d.*
FROM sys.database_principals AS p
JOIN sys.database_permissions AS d ON d.grantee_principal_id = p.principal_id
JOIN sys.objects AS o ON o.object_id = d.major_id

Sie sollten auch die Funktion sys.fn_my_permissions überprüfen:

http://msdn.Microsoft.com/en-us/library/ms188367.aspx

Hier sind einige Links, die Ihnen auch helfen sollen:

ERLAUBNISSE: http://msdn.Microsoft.com/en-us/library/ms191291.aspx

SYS.DATABASE_PERMISSIONS: http://msdn.Microsoft.com/en-us/library/ms188367.aspx

Ich hoffe das hilft dir.

8
Mr.Brownstone