1

SQLプロファイラーを使用してトレースファイルを生成し、チューニングアドバイザーを使用してそのトレースファイルを取得し、データベースの更新に関するいくつかの推奨事項を提供しました。

ただし、SQLプロファイラーは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]
4

1 に答える 1

2

何が起こっていたのか、そしてそれを回避する方法は次のとおりです。

ReportingServerは一時データベースにデータをキャッシュしているようです。ほとんどのレポートはすべて共通のビューを使用していたため、そのデータはすべてキャッシュから取得されていました。

[すべてのイベントを表示]を選択した後、[ストアドプロシージャ]で、CacheHit、CacheInert、CacheMiss、Completed、StmtCompleted、およびStmtStartingを選択しました。

その後、プロファイラーが評価して推奨を行うのに十分な情報がトレースファイルにありました。

于 2010-03-25T15:10:25.950 に答える