0

Je connais "SQL Server Profiler", Mais existe-t-il des outils ou des méthodes disponibles pour surveiller les requêtes sql émises à partir de la machine cliente?SQL Client Profiler?

Certaines des choses actuellement dans mon esprit sont:

1) Le SysInternals ProcMon peut se connecter et dire quand le processus exécutable sur l'ordinateur client se connecte au serveur SQL. Tous les outils similaires mais plus avancés disponibles pour dire plus de données?

2) Une version de débogage ou une version instrumentée des bibliothèques client et API disponibles pour la machine client pour permettre une telle opération?

Répondre

3

Vous pouvez activer le suivi ODBC à partir de l'administrateur de source de données ODBC (odbcad32.exe). Le fichier journal qu'il génère est plutôt cryptique mais il vous fournira les instructions SQL exécutées par l'utilisateur connecté sur cette machine. Il y a également une case à cocher intitulée "Suivi à l'échelle de la machine pour toutes les identités d'utilisateur" pour consigner toutes les instructions SQL exécutées par n'importe quel utilisateur - y compris les services - sur cette machine.

La journalisation peut ne pas démarrer tant que vous ne vous déconnectez pas et ne vous reconnectez pas au serveur SQL. Donc, c'est une bonne idée de redémarrer tous les programmes/services se connecter à votre SQL Server. Ceci est particulièrement important si vous avez activé le pool de connexion, qui gardera les connexions ouvertes même si le programme, en question, s'est déconnecté.

En outre, il existe deux versions de l'Administrateur de sources de données ODBC sur Windows 64 bits, l'une pour 32 bits et l'autre pour 64 bits. Donc, vous devrez activer la journalisation pour le bitness approprié du programme que vous tracez.

Mise à jour: Une autre option pour vous serait d'utiliser un outil comme Wireshark. Comme il a la capacité de s'asseoir au niveau du pilote réseau, il peut intercepter tout le trafic de votre réseau - y compris mais pas limité à SQL. Ceux-ci sont connus comme TDS packets - une norme qui est utilisée par Sybase SQL Server (ASE), Microsoft SQL Server et FreeTDS (w/UnixODBC).

+0

Il est applicable uniquement lorsque le programme/service utilise les noms de source de données ODBC, est-ce pas? Ou capturera-t-il également les clients SQL natifs lorsqu'ils sont configurés sur l'ensemble de la machine? –

+0

Si non, il y aurait une question, pouvons-nous piéger les demandes pour les clients natifs pour passer à travers notre ODBC défini ODBC à la place? –

+1

C'est au niveau du pilote. Donc, tant que vous utilisez l'un des pilotes répertoriés dans l'Administrateur de sources de données ODBC, cela devrait fonctionner. – jveazey

Questions connexes