- - PR -
SqlParameterを使用したSQLから実際に出力されるSOL文を取得したい。
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-08-17 11:21
実際にSQLServerに発行されたSQL文を取得し、ログに出力したいのですが、自作ではなく、ADO.NET機能にないのでしょうか?
MSDNなどで調べたのですが、見つけきれませんでした。 OS Windos XP Pro 言語 .NET1.1 C# DB : SQLServer2000 IDE : VS2003 A : "SELECT * FROM TEST1 WHERE T_INT = @T_INT" ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ B : "SELECT * FROM TEST1 WHERE T_INT = 12345789" AをSqlCommandにセットし、SQL発行前もしくは後にBを取得したいです。 下記にソースを記載します。(データの取得等はできています。) コメントアウトの1もしくは2で取得したいです。 public SqlDataReader ExecuteReaderParameter() { conn.Open(); SqlCommand cmd = null; cmd = new SqlCommand( "SELECT * FROM TEST1 WHERE T_INT = @T_INT", conn); SqlParameter param = new SqlParameter("@T_INT", 12345789); cmd.Parameters.Add(param); SqlCommandBuilder b = new SqlCommandBuilder(); /** 1 **/ SqlDataReader reader = cmd.ExecuteReader(); /** 2 **/ conn.Close(); return reader; } 参考になるサイトだけでもかまいません。 よろしくお願いします。 | ||||||||
|
投稿日時: 2006-08-17 11:50
ADO.NETの機能としてはないと思います。
SQL Server側のログ等で確認するのが一般的なのかな? | ||||||||
|
投稿日時: 2006-08-17 11:53
こんにちは
そもそも、SqlParameter を使用した場合、れいずんさんの示されているBのような形の SQL が SQLServer に渡されるわけではなかったと思います。 たしか SELECT * FROM TEST1 WHERE T_INT = @T_INT, @T_INT=12345789 のような形で渡されたと思います。 SQLServer の profiler などで確認してみてはいかがですか? | ||||||||
|
投稿日時: 2006-08-17 12:13
早速の返信ありがとうございます。
THREE-ONE様>確認した結果、下記が発行されていました。 exec sp_executesql N'SELECT * FROM TEST1 WHERE T_INT = @T_INT', N'@T_INT int', @T_INT = 12345789 これをソース上で取得できれば十分(お客さんにも納得してもらえるかと)だとおもうのですが、取得はできないのでしょうか? いま自分のほうでも取れないか調べていますが、教えていただけるとありがたいです。 どっとねっとふぁん様>説明不足ですいません。現在log4netを使用してログ出力をしているのですが、そのログに発行SQLを出力させたいと考えています。 [ メッセージ編集済み 編集者: れいずん 編集日時 2006-08-17 12:14 ] | ||||||||
|
投稿日時: 2006-08-17 13:32
それは無理だと思います。
どうしてもロギングしたければ、CommandText と SqlParameter から自作するような ロジックを組み込む必要があると思います。 パラメータ込みのSQL文と、各パラメータの名前・値の羅列ではお客様に納得してもらえないのでしょうか? | ||||||||
|
投稿日時: 2006-08-17 14:09
早速の返信ありがとうございます。
THREE-ONE様> >それは無理だと思います。 自分でも調べてみましたが無理そうですね。 >どうしてもロギングしたければ、CommandText と SqlParameter から自作するような >ロジックを組み込む必要があると思います。 そうですね。自作で作ることにします。 >パラメータ込みのSQL文と、各パラメータの名前・値の羅列ではお客様に納得してもらえ >ないのでしょうか? 多分大丈夫だと思うので提案してみます。 とりあえず解決ということで、THREE-ONE様、どっとねっとふぁん様 ありがとうございました。 | ||||||||
|
投稿日時: 2006-08-17 23:34
データベースのオープンは非常に高価なため、もっと局所的に行うことが推奨されています。
うん?接続を閉じたら、reader も閉じるような??? 本題の方ですが、私は自力で作っています。
|
1