Wie Login-Namen, Datenbank-Benutzername oder Rollen von Sqlserver Domain Benutzern zu finden, die nicht ihre eigene Login haben?

StackOverflow https://stackoverflow.com/questions/4268100

Frage

Ich habe ein Login und Datenbankbenutzer „MYDOMAIN \ Domänen-Benutzer“ genannt erstellt. Ich muss herausfinden, welche Rolle ein auf Domain-Benutzer angemeldet hat, aber alle Anrufe der aktuelle Benutzer erhalten die Domain zurückkehren Benutzernamen zB. „MYDOMAIN \ Benutzername“ nicht die Datenbank-Benutzernamen zB. "MYDOMAIN \ Domänen-Benutzer".

Zum Beispiel dieser Abfrage gibt "MYDOMAIN \ Benutzername"

select original_login(),suser_name(), suser_sname(), system_user, session_user,  current_user, user_name()

Und diese Abfrage liefert 0

select USER_ID()

Ich möchte den Benutzernamen Abfrage database_role_members gibt es eine Funktion, die es oder irgendeine andere Art und Weise zurückkehren werde ich die aktuellen Nutzer Rollen bekommen?

War es hilfreich?

Lösung

Ich verstehe, dass der Domain-Benutzer Login in AD-Gruppe zugeordnet wird?

Sie müssen bedenken, dass Benutzer in mehreren AD-Gruppen sein können und jeder von ihnen kann irgendwie in der Datenbank abgebildet wird, ein bisschen chaotisch sein kann. Auch ist es bedeutet, dass Sie etwas mit mehreren Ergebnissen brauchen:)

Versuchen Sie diese:

select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1

ich denke, es richtig alle Windows-Gruppen-Logins greifen sollten, die mit bestimmten Benutzer gebunden werden. Danach können Sie es für Datenbankbenutzer d.h beitreten können.

Select u.name from YourDB.sys.syslogins l
inner join YourDB.sys.sysusers u
on l.sid = u.sid
where l.loginname = ANY (select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1)

Sie müssen bedenken, dass - den ganzen Weg - Sie können ganze Sätze behandeln müssen vielmehr dann einzelne Werte

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top