2017-01-09 3 views
0

クライアントアプリケーションがリモートSQLサーバーに送信しているすべてのSQLをログに記録したいと思います。私はログとデータを通過することができる何らかのクライアント側プロキシを考えています。それはクライアントアプリケーションと同じマシン上で実行する必要があります。SQLトラフィッククライアント側を傍受する方法

感謝しています。

答えて

0

SQL ServerのプロトコルであるTDS( "Tabular Data Stream")はデフォルトでは暗号化されていないため、SQL Serverの接続とコマンド(およびその応答)をプロキシするために些細なパケット転送を使用できます。

TDSプロトコル仕様を使用すると、コマンドをそのように傍受することができ、独自のプロキシを書くことができ、マイクロソフトのWebサイトから入手可能です:https://msdn.microsoft.com/en-us/library/dd304523.aspx?f=255&MSPPError=-2147217396

しかし、これは大仕事です。あなたは、アプリケーションのソースコードを制御する場合は、単純にすべてのSqlCommandCommandTextParameter値を傍受するために、すべてのデータベース操作を変更し、

  • :あなたはすべての接続をキャプチャする必要がない場合は、他の単純なオプションがあります。
  • あなたがプロキシを書いて飛ばし、代わりにネイティブのパケットキャプチャを使用することができ、あなたはWinPCapを使用する必要があります:https://www.winpcap.org/
  • また、実行され、すべてのコマンドのログを取得するために、SQL Serverのプロファイリング機能を使用することができます:What are the APIs used by SQL Profiler?
0

あなたが探しているものはSQL Profilerと呼ばれています。
具体的には、1つのAPIを探しています。

自分でプロファイラのAPIを使用したことはありませんが、this oneは有望です。
また、別のサンプルについてはthis質問をご覧ください。

有効なプロファイラクライアントの印象を持たせたい場合は、this答えをご覧ください。

関連する問題