SQL Serverでさまざまな接続を開いているアプリケーションを見つけようとしています。すべて ".net sqlclientデータプロバイダー"という名前です。
システムモニターからマシン名を取得しました。
_netstat -a -b -o | Find "SQLServer"
_を使用するクライアントで、PID 4 (ntoskrnl) ...
を使用して4つの接続がすべて見つかりました。これはWindowsであり、MS SQLサーバーです。
「SQLサーバープロファイラーのトレースプロセス」により、Management Studioがクラッシュします。
それで、アプリケーションを1つずつ強制終了する前に、この接続を追跡する方法を知っていますか?
宜しくお願いします;
エゼック
sp_who2
(MSDN) は常に適切な開始点であり、sys.processes
テーブルまたはsys.dm_exec_connections
(MSDN) DMVをクエリできます。
あるいは、 Adam Machanic'ssp_WhoIsActive
のようなものは、問題のあるプロセスとクエリを見つけるのに役立ちます。
SQL Serverで探しているものが直接見つからない場合は、ホスト名/ IPアドレスやログイン名など、原因を突き止めるのに役立つ情報を見つけることができます。
DMV/sys.processesにクエリを実行するためのサンプルコード(さらに実行する場合は、このコードを選択する必要があります):
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
SQL Serverプロファイラーイベントの列「ClientProcessID」には、それらのクエリに対してその値を取得し、同じIDのタスクマネージャー->プロセスの詳細->プロセスと照合します。これにより、実際のアプリケーション名を取得できます。
ロギングモニターを使用しており、アプリ開発者に、ここでのアプローチを使用してアプリケーション接続文字列のプロパティを更新するように依頼しています。
基本的には、ConnectionStringの「App」または「Application Name」キーワード。