it-swarm-eu.dev

Výpis existujících přihlášení a uživatelů serveru SQL

Vím, že můžeme zkontrolovat přihlašovací údaje a definované uživatele pomocí GUI na serveru SQL, ale zajímalo by mě, jak tuto kontrolu provést pomocí skriptu.

Spustil jsem dotaz níže, ale ukazuje Principal_id, který si nejsem jistý, jak mapovat, abych získal úroveň oprávnění.

SELECT * FROM Sys.login_token 

Existuje tedy nějaký vestavěný uložený proc, který umí vypsat přihlašovací údaje a uživatele s jejich úrovní oprávnění?

Děkuju.

14
Sky

Nejste si jisti, zda existuje vestavěný způsob, ale zkuste tento dotaz vyzkoušet principy serveru:

;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

V zásadě to, co dělá, uděluje a odepírá oprávnění a spojuje je s členstvím v roli. Měl by vám poskytnout krátký pohled na zabezpečení pro přihlášení k serveru. Dejte nám vědět, pokud to hledáte.

14
Thomas Stringer

Vyzkoušejte toto - zobrazí se seznam uživatelů, objektů a oprávnění, která mají k těmto objektům:

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

Měli byste se také podívat na funkci sys.fn_my_permissions:

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

Zde je několik odkazů, které by vám měly také pomoci:

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

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

Doufám, že vám to pomůže.

8
Mr.Brownstone