.NET 環境から、 SqlCommandオブジェクトによって生成される完全な SQL 文字列にアクセスできますか?
注: 完全な SQL 文字列は、VisualStudio のデバッグ モードで、Intellisense ホバーに表示されます。
必要に応じて、リフレクション テクニックを使用します。ここにいる誰かがそれを手に入れる方法を知っていると確信しています。
更新 1 :
パラメータを持つストアド プロシージャを呼び出しておりcmd.CommandType = CommandType.StoredProcedure
、生成されて実行された完全な SQL を取得しようとしています。cmd. Prepare()メソッドは、状態フィールドなどに完全な文字列を格納する可能性がある場合、この状況では役に立たない可能性があります。
更新 2:
準備中または実行中に完全な SQL 文字列が内部的に生成されないことを示す以下の (および参照されている) 回答に照らして、.NET Reflector を使用して少し調べてみました。内部接続クラスでさえ、オブジェクトを文字列に煮詰めるのではなく、渡すように見えます。次に例を示します。
内部抽象 void AddPreparedCommand( SqlCommand cmd );
宣言型: System.Data.SqlClient.SqlInternalConnection
アセンブリ: System.Data、Version=2.0.0.0
一般に、何ができるかを証明し、実際に何が起こっているかを示すために、詳細なレベルまで詳しく説明してくれた皆さんに感謝します。とても有難い。徹底した説明が好きです。彼らは確実性を追加し、答えに信憑性を与えます.