Я использую Sql Server 2012, и у меня есть таблица, которая получает от 1000 до 1500 обновлений строк в минуту (количество, отображаемое в мониторе активности - последние дорогие запросы).Эти обновления поступают с устройств GPS в разных местах, и число кажется правильным (каждая строка представляет активное устройство GPS, отправляющее обновления).
Я написал очень простой «триггер обновления» после сбоя с более сложными,Простой триггер тоже не работает.Триггер должен вставить значение «1» в таблицу («Тест») для каждой строки, обновленной в таблице, получающей обновления («LiveInfo»).
После создания и включения триггера я заметил следующее:- никакие записи не вставлены в тестовую таблицу (поскольку у меня должна была быть запись, содержащая значение «1» для каждой обновленной строки) - похоже, что таблица LiveInfo (та, которая получает большое количество обновлений) прекращает получать обновления, когда триггерЗапуски.
Я создал таблицы и триггер с точно такой же структурой на локальном экземпляре SQLServer (хотя и в версии 2016), и я протестировал все с помощью ручных обновлений, а не автоматических обновлений.Кажется, что все работает нормально, используя простой триггер (даже с более сложными триггерами).
Код триггера:
Create trigger t_Live
on [Accounting].[dbo].[LiveInfo]
for update
as
Begin
insert into Test
(TestUpdate)
values(1)
End
Различные версии SQL Server не должны иметь значения для такого простоготриггер (из того, что я исследовал), и я начинаю верить, что может быть слишком много обновлений (или, может быть, разные строки обновляются почти в одно и то же время) для триггера для обработки.
Если у кого-то есть идея, почему триггер не реагирует на обновления и останавливает обновления все вместе, было бы очень полезно.
Редактировать: это код, который обновляет таблицу LiveInfo.Я получил запрос от Activity Monitor и имеет около 1300 выполнений / мин:
UPDATE LiveInfo SET
[LogTimeUTC] = @logTimeUTC,
[Latitude] = @lat,
[Longitude] = @lon,
[Height] = @height,
[SolutionType] = @solType,
[TrackedSats] = @trackedSats,
[PDOP] = @pdop,
[MountPointName] = @mountPointName,
[FixedBEIDOU] = @fixedBEIDOU,
[FixedQZSS] = @fixedQZSS,
[FixedIRNSS] = @fixedIRNSS
WHERE [LoginWithOrganization] = @loginWithOrg