web-dev-qa-db-fra.com

Recherche de l'application derrière ".net sqlclient data provider"

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

5
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
4
Ian_H

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.

2
user164767

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:

https://msdn.Microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring (v = vs.110) .aspx

Fondamentalement, le mot-clé "App" ou "Nom de l'application" sur ConnectionString.

2
JuddGledhill