Причина отправки пакетных запросов из базы данных ReportServer SSRS в ядро ​​базы данных каждые 5 секунд

Я только что отслеживал запросы к базе данных SQL Server с помощью SQL Server Profiler. Я понял, что ReportServer база данных отправляет 2 пакетных запроса каждые 5 секунд - см. изображение ниже.

Я также попробовал это на моем локальном ядре базы данных, чтобы убедиться, что от пользователей не вызывается отчет, но снова запросы отправляются каждые 5 секунд, так же, как на сервер.

Я прочитал содержание двух запросов, которые одинаковы для всех запросов, один из которых обновляет event таблица ReportServer базы данных, а затем выберите топ 8 из event Таблица

Еще одно обновление notification стол, а затем выберите топ 8 из notification стол соединился с тремя другими столами

Вот код (пакетные запросы) внутри столбца textData Profiler

Запрос 1:

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]

Запрос 2:

declare @BatchID uniqueidentifier
set @BatchID = newid()

UPDATE [Notifications] WITH (TABLOCKX)
SET [BatchID] = @BatchID,
    [ProcessStart] = GETUTCDATE(),
    [ProcessHeartbeat] = GETUTCDATE()
FROM 
    (SELECT TOP 8 [NotificationID] 
     FROM [Notifications] WITH (TABLOCKX) 
     WHERE ProcessStart IS NULL 
       AND (ProcessAfter IS NULL OR ProcessAfter < GETUTCDATE()) 
     ORDER BY [NotificationEntered]) AS t1
WHERE 
    [Notifications].[NotificationID] = t1.[NotificationID]

SELECT TOP 8
    -- Notification data
    N.[NotificationID], N.[SubscriptionID], N.[ActivationID],
    N.[ReportID], N.[SnapShotDate], N.[DeliveryExtension],
    N.[ExtensionSettings], N.[Locale], N.[Parameters],
    N.[SubscriptionLastRunTime], N.[ProcessStart],
    N.[NotificationEntered], N.[Attempt], N.[IsDataDriven],
    SUSER_SNAME(Owner.[Sid]),
    Owner.[UserName],
    -- Report Data
    O.[Path], N.[ReportZone], O.[Type], SD.NtSecDescPrimary,
    N.[Version], Owner.[AuthType], SR.[SubscriptionResult]
FROM
    [Notifications] N WITH (TABLOCKX) 
INNER JOIN
    [Catalog] O ON O.[ItemID] = N.[ReportID]
INNER JOIN
    [Users] Owner ON N.SubscriptionOwnerID = Owner.UserID
LEFT OUTER JOIN 
    [SecData] SD ON O.[PolicyID] = SD.[PolicyID] AND SD.AuthType = Owner.AuthType
LEFT OUTER JOIN 
   [SubscriptionResults] SR ON N.[SubscriptionID] = SR.[SubscriptionID] 
                            AND CHECKSUM(convert(nvarchar(max), N.[ExtensionSettings])) = SR.[ExtensionSettingsHash]
WHERE
    N.[BatchID] = @BatchID
ORDER BY 
    [NotificationEntered]

Во-первых, я хотел бы знать, что является причиной того, что эти раздражающие запросы отправляются каждые 5 секунд, даже если результат обоих выборов во всех запросах пуст и нет фактического запроса к службе отчетов (кажется, что они этого не делают делать что-то особенное, так как таблицы событий и уведомлений пусты)

И во- вторых, как я могу остановить эту процедуру отправки бесполезных запросов ** каждые 5 секунд с ReportServer база данных?

Обратите внимание, что я хочу, чтобы моя служба отчетов работала и работала, поэтому я не могу остановить ее, я просто хочу остановить отправку бесполезных запросов.

заранее спасибо

0 ответов

Другие вопросы по тегам