8

linq to Entity を使用して、azure データベースにクエリを実行しています。特定の問題を引き起こしているクエリを表示するために、Azure にログインしました。渡されたパラメーターを実際に表示したいのですが、Azure が提供するものはすべて以下のとおりです。クエリが既に実行された後にパラメーターを表示する方法はありますか (たとえば、ログに記録するようにコードを変更することは、現時点ではオプションではありません)。

Azure にログインしたら、管理ポータル - SQL データベース | に移動します。クエリのパフォーマンス | 特定のクエリを選択します。次のように表示されます: 問題は、@p_ linq _19などのパラメーターに渡されたものが表示されないことです。パラメータのプレースホルダーしか表示されません。

SELECT TOP (150) 
[Project1].[AlertIdentifier] AS [AlertIdentifier]
FROM ( SELECT 
 [Extent1].[AlertIdentifier] AS [AlertIdentifier], 
 [Extent1].[TimeReceived] AS [TimeReceived]
 FROM [dbo].[SecurityAlert] AS [Extent1]
 WHERE (2 <> [Extent1].[AlertStatusID]) AND ((convert(datetime2, '0001-01-01 00:00:00.0000000', 121) = @p__linq__0) OR ([Extent1].[DateScanned] >= @p__linq__1)) AND ((N'' = @p__linq__2) OR ([Extent1].[BettingShopIdentifier] LIKE @p__linq__3 ESCAPE N'~')) AND ((convert(datetime2, '0001-01-01 00:00:00.0000000', 121) = @p__linq__4) OR ([Extent1].[DateScanned] <= @p__linq__5)) AND ((cast(0 as float(53)) = @p__linq__6) OR ( CAST( [Extent1].[SlipStake] AS float) >= @p__linq__7)) AND ((@p__linq__8 < 1) OR ([Extent1].[SlipStatusID] = @p__linq__9)) AND ((cast(0 as float(53)) = @p__linq__10) OR ( CAST( [Extent1].[SlipPayoutActual] AS float) >= @p__linq__11) OR ( CAST( [Extent1].[SlipPayoutCalculated] AS float) >= @p__linq__12) OR ( CAST( [Extent1].[SlipPotentialReturn] AS float) >= @p__linq__13)) AND ((N'' = @p__linq__14) OR ([Extent1].[AlertSummary] LIKE @p__linq__15 ESCAPE N'~')) AND ((N'' = @p__linq__16) OR ([Extent1].[StaffScannedByUsername] LIKE @p__linq__17 ESCAPE N'~') OR ([Extent1].[StaffPayoutUsername] LIKE @p__linq__18 ESCAPE N'~') OR ([Extent1].[StaffEditedByUsername] LIKE @p__linq__19 ESCAPE N'~'))
)  AS [Project1]
ORDER BY [Project1].[TimeReceived] ASC
4

3 に答える 3

1

いくつかの構成作業が必要ですが、効果的な方法は、Entity Framework レベルでトレースを設定することです。そうすれば、アプリケーション レベルで実行されるすべての SQL ステートメントをログに記録できます。

NuGet パッケージとしても利用できるCommunity Entity Framework Provider Wrappersを使用することをお勧めします。

これは 2011 年のものですが、最新バージョンの Entity Framework で使用する方法については、この回答このフォーラム スレッドを参照してください。

このラッパーがどのように機能するかを説明する、以前のバージョンの元のブログ投稿があります。

もう 1 つの方法は、amhed提案されている MiniProfiler を使用することです。

于 2013-04-04T17:37:03.507 に答える
1

私はミニプロファイラーオプションを選びます。http://miniprofiler.com/からダウンロードして、SQL 接続をプロファイリングするように構成できます。

もちろん、本番環境でこれをオンにすることはありません。デバッグ/ステージング シナリオのためだけにオンにするか、特定の管理者ユーザーがログインしているときにのみレンダリングするようにプロファイラーを構成することができます。

于 2013-04-01T14:07:39.590 に答える