Причина отправки пакетных запросов из базы данных 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
база данных?
Обратите внимание, что я хочу, чтобы моя служба отчетов работала и работала, поэтому я не могу остановить ее, я просто хочу остановить отправку бесполезных запросов.
заранее спасибо