アプリケーションを実行するためにRDPを介してログインする多くの異なるユーザーがいるWindowsターミナルサーバーがあります。アプリケーションは、SQL Server 2008 R2インスタンスに対してユーザーごとに1つ以上の接続を作成します。すべてのユーザーが同じSQLログインを使用して同じデータベースにアクセスします。特定のユーザーのSQLセッションをトレースできるようにしたいのですが、どのSQLセッションがどのユーザーに属しているかを判別する方法が見つかりませんでした。ただし、アプリケーションの各インスタンスが使用しているソースTCPポートを特定できます。
クライアントのTCP=ポートに基づいてSQLセッションをトレースする方法はありますか?
クライアントのTCPポート?に基づいてSQLセッションをトレースする方法はありますか?
はい。 sys.dm_exec_connections をクエリして、クライアントのTCPポート(列client_tcp_port
)。
例えば:
SELECT DEC.session_id
FROM sys.dm_exec_connections AS DEC
WHERE DEC.client_net_address = '192.168.0.100'
AND DEC.client_tcp_port = 63465;