我已经使用SQL事件探查器生成跟踪文件,并调整顾问程序以获取该跟踪文件并提供有关数据库更新的一些建议。
但是,SQL Profiler似乎在针对Reporting Server运行时不跟踪查询,但探查器似乎没有捕获任何查询。我正在记录默认值(SQL:BatchCompleted和Starting,RPC:completed,以及Sessions - Existing Connections)
为了运行调优顾问,我应该在SQL事件探查器中捕获哪些事件?
更新
BatchStarting甚至可以捕获一些SQL;但是它始终与事件或通知表有关:
declare @BatchID uniqueidentifier
set @BatchID = NEWID()
UPDATE [Event] WITH (TABLOCKX)
SET [BatchID] = @BatchID,
[ProcessStart] = GETUTCDATE(),
[ProcessHeartbeat] = GETUTCDATE()
FROM (
SELECT TOP 8 [EventID] FROM [Event] WITH (TABLOCKX) WHERE [ProcessStart] is NULL ORDER BY [TimeEntered]
) AS t1
WHERE [Event].[EventID] = t1.[EventID]
select top 8
E.[EventID],
E.[EventType],
E.[EventData]
from
[Event] E WITH (TABLOCKX)
where
[BatchID] = @BatchID
ORDER BY [TimeEntered]
答案 0 :(得分:1)
这是发生了什么,以及如何解决它。
Reporting Server似乎将数据缓存在临时数据库中。由于我们的大多数报告都使用了一个公共视图,因此所有这些数据都是从缓存中检索的。
选择“显示所有事件”后,在“存储过程”下,我选择了CacheHit,CacheInert,CacheMiss,Completed,StmtCompleted和StmtStarting。
在跟踪文件中有足够的信息供分析器评估并提出建议。