Sql server Select不返回行-跟踪文件中的查询
我使用Sql server Select不返回行-跟踪文件中的查询,sql-server,sql-server-2008-r2,ssms,sql-server-profiler,Sql Server,Sql Server 2008 R2,Ssms,Sql Server Profiler,我使用 SELECT * INTO trace_table FROM ::fn_trace_gettable('c:\my_trace.trc', default) 虽然我注意到某些select语句需要花费大量的时间(持续时间)和cpu,但最后不返回任何行(rowscont==NULL) 范例 在查询窗口中测试 如果将同一查询从TextData-字段复制到查询窗口中,我会得到很多行(>200000) 问题 查询没有返回任何行的原因可能是什么 查询结束了吗 如何识别跟踪文件中失败的查询执行
SELECT * INTO trace_table FROM ::fn_trace_gettable('c:\my_trace.trc', default)
虽然我注意到某些select语句需要花费大量的时间(持续时间)和cpu,但最后不返回任何行(rowscont==NULL
)
范例
在查询窗口中测试
如果将同一查询从TextData
-字段复制到查询窗口中,我会得到很多行(>200000)
问题
- 查询没有返回任何行的原因可能是什么
- 查询结束了吗
- 如何识别跟踪文件中失败的查询执行
Use MyDatabase
SELECT ti.EventClass, te.Eventname, Count(*) as CountAsterisk
, Sum(ti.RowCounts) as RowCountsSum
, Sum(ti.Duration/1000) as DurationSum_ms
, Avg(ti.Duration/1000) as DurationAvg_ms
FROM TraceImport ti
Left JOIN TraceEvents te
ON ti.EventClass = te.EventTraceID
Group By ti.EventClass, te.Eventname
Order By EventClass
返回此结果
sys.fn\u trace\u gettable
返回可能已捕获的所有可能列
无法保证您正在查看的实际跟踪确实捕获了每个相关事件类的行数
根据您目前提供的信息,没有理由认为跟踪不是这样设置的
在内部单击在窗口中打开应用程序的Tools/SQL Server Profiler
,Trace properties
单击选项卡Event selection
,并确保选中列RowCounts
,查看事件类SQL:BatchCompleted
是否通过执行
行搜索==null
或显示数据来检查它是否包含数据?因为我相信它是@@rowcount
RowCounts为null表示您没有收集它。并不是说它是0。您是正确的,可以使用@@rowcount
查询返回的行。在我的例子中,导入的跟踪文件包含一列rowscont
。对于select语句,此列的值通常大于0(并且不为NULL
)。从MMS中的TextData
字段执行查询将返回行。但是在我们的用户性能测试中,同一条语句似乎没有返回任何行(因此导入的跟踪文件中的NULL
。导入的跟踪文件中的某些行在RowCounts
列中具有值>0
。因此,我假设包含返回行的Select的每一行都应该具有RowCounts>0
@surfmuggle它们具有什么事件类?有问题的行具有事件类。)12和13。这是我导入跟踪文件的方式。似乎只有sql server 2012才提供onwards@surfmuggle-这不正确。13是批处理启动。它不能有行计数。选择计数(*)是什么,来自MyImportedTrace的EventClass,其中RowCounts>0 GROUP BY EventClass
return?谢谢,我不知道必须为每个事件类配置此选项。阅读并没有帮助。但通过您的屏幕截图,我知道这会让事情变得清楚。
Use MyDatabase
SELECT ti.EventClass, te.Eventname, Count(*) as CountAsterisk
, Sum(ti.RowCounts) as RowCountsSum
, Sum(ti.Duration/1000) as DurationSum_ms
, Avg(ti.Duration/1000) as DurationAvg_ms
FROM TraceImport ti
Left JOIN TraceEvents te
ON ti.EventClass = te.EventTraceID
Group By ti.EventClass, te.Eventname
Order By EventClass