Schnell! Welcher bestimmte SQL Server-Benutzer ist in welcher Datenbank angemeldet?


SQL Server Meister Die Datenbank speichert Tabellen mit wichtigen und ständig aktualisierten Informationen zum Status des SQL-Servers. Eine dieser Tabellen, Systemprozessekann verwendet werden, um (in SQL Server selbst) zu verfolgen, welche SQL Server-Benutzer derzeit angemeldet sind und auf welche Datenbank (en) sie zugreifen.

Der schnelle Weg, um herauszufinden, ob ein bestimmter Benutzer auf eine bestimmte Tabelle zugreift, ist eine Abfrage. Im folgenden Beispiel wird überprüft, ob ein SQL-Benutzer vorhanden ist Syegul greift auf die Datenbank zu Großer Tisch::

select * from master.dbo.sysprocesses
where loginame="syegul"
and dbid = db_id('BigTable'))

(Beachten Sie, dass die Spalte Loginame wird einfach so geschrieben, mit einem n, nicht zwei.)

Die von dieser Abfrage zurückgegebenen Spalten
Mit dieser Option können Sie nach zahlreichen Kriterien für jede Benutzerverbindung suchen, z. B. nach dem Protokoll, das die Person verwendet (praktisch, wenn Sie feststellen möchten, ob ein Benutzer lokal über Named Pipes oder über TCP / IP eine Verbindung herstellt) und welche Prozess-ID sie anhängen zu und so weiter. Beachten Sie, dass diese Methode nicht funktioniert, wenn Sie mehrere anonyme Verbindungen abstrahieren, z. B. wenn Sie ein Webserver-Frontend als Hauptzugriff auf Ihre Daten verwenden, da alle Benutzer dieselbe Verbindung herstellen.

Wenn Sie darüber nachdenken, einen Auslöser für diese Tabelle zu schreiben, der ausgelöst wird, wenn ein bestimmter Benutzer eine Verbindung herstellt oder wenn jemand auf eine bestimmte Tabelle zugreift, funktioniert dies nicht – nein, auch wenn Sie Änderungen an den Systemkatalogen aktivieren. Es ist wahrscheinlich das Beste, da eine sehr weise Denkrichtung der SQL Server-Administratoren besagt, dass solche Änderungen an der vorgenommen werden Meister Datenbank ist eine schlechte Idee, egal unter welchem ​​Vorwand. Der beste Ansatz, um so etwas zu tun, könnte darin bestehen, einen Trigger für eine bestimmte Tabelle zu erstellen, der ausgelöst wird, wenn eine bestimmte Art von Änderung vorgenommen wird, und dann die zu überprüfen Systemprozesse Tabelle, um festzustellen, ob der betreffende Benutzer die Änderung vornimmt.


Serdar Yegulalp ist Herausgeber der Windows 2000 Power Users Newsletter. Schauen Sie sich seine an Windows 2000-Blog für seine neuesten Ratschläge und Überlegungen zur Welt der Windows-Netzwerkadministratoren – und teilen Sie bitte auch Ihre Gedanken mit!

Dig Deeper in der Windows-Clientverwaltung

Similar Posts

Leave a Reply