如何在ASP.NET中的GridView中显示查询计划

4
如何将SQL Server 2008的查询计划显示在GridView ASP.NET中?
我的SQL Server 2008代码是:
SELECT TOP 10 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)+1),
qs.execution_count,
qs.total_logical_reads, qs.last_logical_reads,
qs.total_logical_writes, qs.last_logical_writes,
qs.total_worker_time,
qs.last_worker_time,
qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
qs.last_elapsed_time/1000000 last_elapsed_time_in_S,
qs.last_execution_time,
qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY qs.total_logical_reads DESC 

我需要在网格视图中显示输出。
错误是查询计划列未显示数据...
请注意保留HTML标记。
<asp:TemplateField HeaderText="Query Plan" >
    <ItemTemplate>
          <asp:Label ID="lblPlan" Text='<%#Eval("query_plan") %>' runat="server" />
    </ItemTemplate>
</asp:TemplateField>

where i made error ?


这个 gridview query_plan 列没有显示数据... 不是一个错误,这不是你无法获取的,而是来自 asp.net 的非错误信息。 - Aristos
1
尝试使用以下简单的代码 <ItemTemplate><%#Eval("query_plan") %></ItemTemplate>,看看是否能得到任何结果。 - Aristos
它没有显示任何东西... - Happy .NET
如果您的查询返回任何内容,请显示其余代码,以了解您如何将其连接到SQL运行。 - Aristos
我正在从数据表绑定GridView...在数据表中有内容... - Happy .NET
<ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.1" Build="10.50.1600.1"><BatchSequence><Batch><Statements><StmtSimple StatementText="设置日期格式为dmy" StatementId="1" StatementCompId="1" StatementType="SET CMD" /><StmtSimple StatementText=";SELECT * FROM (select TOP 5 ROW_NUMBER() OVER (ORDER BY Query) as ROW_NUM,* from (select *, ROW_NUMBER() over (order by Query desc) as gridviewcoun........ - Happy .NET
1个回答

0

query_plan列是XML格式的。

您需要对其进行HTML编码。

ASP.NET 4+(注意#后面的冒号)

<asp:TemplateField HeaderText="Query Plan">
    <ItemTemplate>
        <asp:Label ID="lblPlan2" Text='<%#: Eval("query_plan") %>' runat="server" />
    </ItemTemplate>
</asp:TemplateField>

之前的版本

<asp:TemplateField HeaderText="Query Plan">
    <ItemTemplate>
        <asp:Label ID="lblPlan" Text='<%# System.Web.HttpUtility.HtmlEncode(Eval("query_plan").ToString())%>' runat="server" />
    </ItemTemplate>
</asp:TemplateField>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接