J'essaie de trouver quelle application ouvre diverses connexions sur le serveur SQL, toutes nommées "fournisseur de données sqlclient .net".
Du moniteur système, j'ai obtenu le nom de la machine;
Sur le client avec netstat -a -b -o | Find "SQLServer"
, J'ai trouvé 4 connexions toutes avec la PID 4 (ntoskrnl) ...
oui c'est windows et c'est un serveur MS SQL.
"Processus de suivi dans le profileur de serveur SQL", bloque Management Studio.
Donc, avant de commencer à tuer les applications, une par une, avez-vous une idée de comment retrouver cette connexion?
Meilleures salutations;
Ezeq
sp_who2
(MSDN) est toujours un bon début, et vous pouvez interroger le sys.processes
table ou sys.dm_exec_connections
(MSDN) DMV.
Alternativement quelque chose comme Adam Machanic'ssp_WhoIsActive
peut aider à trouver les processus et requêtes problématiques.
Si vous ne trouvez pas ce que vous cherchez directement dans SQL Server, vous pourrez trouver des éléments comme le nom d'hôte/l'adresse IP et le nom de connexion qui vous aideront à retrouver le coupable.
Exemple de code pour interroger DMV/sys.processes (vous devrez le couper si vous voulez en faire plus):
Select spid,hostname,hostprocess,program_name,nt_username, blocked, waittime, waittype, loginame,cmd,spid,waittype,waittime,lastwaittype,cpu,physical_io,memusage,login_time,last_batch,open_tran,status,net_address, t.text
from sys.sysprocesses sp
--JOIN sys.dm_exec_connections con ON con.session_id = sp.sid
CROSS APPLY( select text from sys.dm_exec_sql_text(sp.sql_handle))t
--where hostname
order by sp.spid
Il existe une colonne dans les événements du profileur SQL Server "ClientProcessID" qui récupère cette valeur par rapport à ces requêtes et les compare avec le Gestionnaire des tâches-> Détails du processus-> processus avec le même ID. De cette façon, nous pouvons obtenir le vrai nom de l'application.
Nous utilisons un moniteur de journalisation et demandons à nos développeurs d'applications de mettre à jour une propriété sur la chaîne de connexion d'application en utilisant l'approche ici:
Fondamentalement, le mot-clé "App" ou "Nom de l'application" sur ConnectionString.