2010-12-16 204 views
0

Nous avons une énorme quantité de diverses applications de bureau, feuilles de calcul (1500+), etc accéder à un serveur SQL. Nous aimerions commencer à nous connecter sur le serveur qui nous dira autant que possible quels utilisateurs, sur quelles machines, exécutent quel sql, à partir de quelle application (windows exe/nom du processus). Plus précisément, je suis intéressé par le nom de la machine et le nom d'utilisateur, mais j'aimerais obtenir autant d'informations que possible.Possible de déterminer machine_name et Windows nom d'utilisateur exécutant une requête sur SQL Server (2000)?

Est-ce possible?

Important: Je suis intéressé en général, mais ma situation actuelle est SQL Server 2000.

Répondre

2

Pour inspecter l'état actuel:

Dans SQL 2000 vous regardez dans sysprocesses:

  • hostname Nom du poste de travail.
  • program_name Nom du programme d'application.

SQL 2005 et une fois que vous regardez dans sys.dm_exec_sessions

  • host_name Nom du poste de travail client qui est spécifique à une session . La valeur est NULL pour les sessions internes . Est nullable.
  • program_name Nom du programme client ayant lancé la session. La valeur est NULL pour les sessions internes. est-il valide?

Pour vous connecter ces informations que vous utilisez SQL tracing, trace les événements SQL:BatchCompleted et RPC:Completed. Le traçage, même lorsqu'il est effectué du côté serveur, ajoute des frais généraux importants et il est très peu probable que vous puissiez vous le permettre sans dégradation significative des performances. Voir Monitoring Events.

+0

Toute idée sur le nom d'utilisateur? nt_username ne semble pertinent que pour les sessions utilisant l'authentification Windows. net_address renvoie l'adresse mac qui semble fonctionner pour moi. – tbone