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

我会选择 miniprofiler 选项。你可以在这里下载它:http: //miniprofiler.com/并配置它来分析你的 SQL 连接。

当然,您不会将其用于生产。您可以将其仅用于调试/暂存场景,也可以将探查器配置为仅在特定管理员用户登录时才呈现。

于 2013-04-01T14:07:39.590 回答
1

尽管需要一些配置工作,但一种有效的方法是在实体框架级别设置跟踪。这样您就可以记录在应用程序级别执行的所有 SQL 语句。

我建议使用Community Entity Framework Provider Wrappers,也可以作为NuGet 包使用。

它来自 2011 年,但您可以在此答案此论坛主题中找到有关将其与更新版本的 Entity Framework 一起使用的说明。

以前版本的原始博客文章解释了这个包装器的工作原理。

另一种选择是使用MiniProfiler,正如amhed 所建议的那样

于 2013-04-04T17:37:03.507 回答
0

您可以在管理门户中检查查询性能。这是链接如何做到这一点。

您还可以通过 Management Studio 连接到 Azure 数据库。这是一个链接如何做到这一点。在那里您可以检查查询计划并手动调用您的查询。

于 2013-03-31T19:20:10.570 回答