SQL Server プロファイラーで行うように、C# アプリからデータベース サーバーにトレースを作成したいと考えています。私の SQL 管理スタジオでは機能しないように見えるストアド プロシージャ (sys.sp_trace_create など) を見つけました。誰かがコーディングを手伝ってくれないかと思っていたのですが、どこから始めればいいのでしょうか?!
3 に答える
プロファイラー自体のように、これをリアルタイムにしたいですか?それをするのは難しいでしょう。基本的に、プロファイラーを再作成することになります。
それが要件でない場合は、サーバー側のトレースを開始するために見つかったsp_trace_createストアドプロシージャを呼び出してから、アプリケーションを使用してこのトレースが生成するファイルを開くことをお勧めします。
これがどのように機能するかを知る最も簡単な方法は、SQLプロファイラー自体を実行し、必要なすべてのオプションを設定してから、[実行]をクリックし、すぐに[停止]をクリックすることです。次に、[ファイル]、[エクスポート]、[スクリプトトレース定義]に移動し、適切なバージョンを選択します。
これにより、すべてのトレースイベント、列などを含む、すべての正しい部分をまとめたTSQLスクリプトが得られます。
プロファイラーのより技術的な歴史:この古いSQLMagの記事には、SQL7.0が導入されたときに「SQLTrace」と呼ばれるアプリに取って代わったプロファイラーの歴史があります。
それでも興味がある場合は、このコードを見つけてください
public void FileToTable()
{
TraceServer reader = new TraceServer();
ConnectionInfoBase ci = new SqlConnectionInfo("localhost");
((SqlConnectionInfo)ci).UseIntegratedSecurity = true;
reader.InitializeAsReader(ci, @"Standard.tdf");
int eventNumber = 0;
while (reader.Read())
{
Console.Write( "{0}\n", reader.GetValue(0).ToString() );
}
reader.Close();
}
LINQ to SQLを使用している場合、それが生成するすべてのSQLコマンドを出力ウィンドウに送信できます(または、必要に応じてファイルに記録できます)。ここを参照してください:http ://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID = 11