c# - 在 Azure 查询详细信息中查看时不保留 SQL 注释

标签 c# sql-server entity-framework azure

我们使用 .NET Entity Framework 与 Azure SQL 数据库进行通信。我们使用QueryOriginInterceptor在发送到 SQL Server 的每个 SQL 命令的顶部添加一些注释,目的是帮助识别特定查询在代码中的来源位置。

问题是,当在 Azure UI 中查看长时间运行的查询(并查看 sys.dm_exec_query_stats )时,注释不存在。

例如,如果我们运行此查询:

-- Stack:
-- Utils.Orders.GetOrders
select * 
from [Order] o 
join OrderItem oi on oi.OrderId = o.ID

在 Azure 中,长时间运行的查询如下所示:

enter image description here

有办法保留这些评论吗?

最佳答案

sys.dm_exec_query_stats 不包含注释,但 dm_exec_sql_text 包含注释。

This artice解释如何使用两者来诊断问题。

文章中的相关 SQL 查询是:

SELECT TOP 25
databases.name,
dm_exec_sql_text.text AS TSQL_Text,
CAST(CAST(dm_exec_query_stats.total_worker_time AS DECIMAL)/CAST(dm_exec_query_stats.execution_count AS DECIMAL) AS INT) as cpu_per_execution,
CAST(CAST(dm_exec_query_stats.total_logical_reads AS DECIMAL)/CAST(dm_exec_query_stats.execution_count AS DECIMAL) AS INT) as logical_reads_per_execution,
CAST(CAST(dm_exec_query_stats.total_elapsed_time AS DECIMAL)/CAST(dm_exec_query_stats.execution_count AS DECIMAL) AS INT) as elapsed_time_per_execution,
dm_exec_query_stats.creation_time, 
dm_exec_query_stats.execution_count,
dm_exec_query_stats.total_worker_time AS total_cpu_time,
dm_exec_query_stats.max_worker_time AS max_cpu_time, 
dm_exec_query_stats.total_elapsed_time, 
dm_exec_query_stats.max_elapsed_time, 
dm_exec_query_stats.total_logical_reads, 
dm_exec_query_stats.max_logical_reads,
dm_exec_query_stats.total_physical_reads, 
dm_exec_query_stats.max_physical_reads,
dm_exec_query_plan.query_plan,
dm_exec_cached_plans.cacheobjtype,
dm_exec_cached_plans.objtype,
dm_exec_cached_plans.size_in_bytes
FROM sys.dm_exec_query_stats 
CROSS APPLY sys.dm_exec_sql_text(dm_exec_query_stats.plan_handle)
CROSS APPLY sys.dm_exec_query_plan(dm_exec_query_stats.plan_handle)
INNER JOIN sys.databases
ON dm_exec_sql_text.dbid = databases.database_id
INNER JOIN sys.dm_exec_cached_plans 
ON dm_exec_cached_plans.plan_handle = dm_exec_query_stats.plan_handle
WHERE databases.name = 'AdventureWorks2014'
ORDER BY dm_exec_query_stats.max_logical_reads DESC;

关于c# - 在 Azure 查询详细信息中查看时不保留 SQL 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382144/

相关文章:

c# - 尝试在 C# 中序列化和反序列化实体对象

c# - 如何在 XAML WPF 中创建强制依赖属性

c# - 如何获取 Stream 的底层文件句柄?

c# - 如何使用大量 CPU 快速获取线程的托管堆栈跟踪

sql-server - SQL Server CE - 不允许我添加最大长度的 Varbinary 列

entity-framework - 在带有 EF5 的 ASP.NET MVC 4 中使用 MiniProfiler

c# - MongoRepository 继承序列化错误

SQL Server 2008 : BULK INSERT csv - is it possible to choose fields?

javascript - 存储为 JSON 的数据的 SQL 查询

c# - EF 4 不会删除实体