Стартовая страница › Форумы › Ошибки в работе › Ошибки Сервера › Переполнение очереди ModDBExport и пропуски в передаче данных.
Помечено: SQL
- В этой теме 9 ответов, 3 участника, последнее обновление 5 лет, 1 месяц назад сделано Mikhail.
-
АвторСообщения
-
24.02.2019 в 15:50 #11194Komrade82Участник
Добрый день. Я организовал передачу текущих данных с четырех каналов раз в минуту в базу SQL. Однако в логах модуля ModDBExport пишет о переполнении очереди и в целевой базе данные приходят с пропусками до 5 минут.
В модуле скрипт такой:
IF (datepart (ss, @dateTime) < 7) and ( @cnlNum = 385 or @cnlNum = 402 or @cnlNum = 451 or @cnlNum = 418)
BEGIN
EXEC [dbo].[UNSP_GPA_Export] @dateTime, @cnlNum, @val;
END;
В базе хранимая процедура:/****** Object: StoredProcedure [dbo].[UNSP_GPA_Export] Script Date: 24.02.2019 16:05:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GOALTER PROCEDURE [dbo].[UNSP_GPA_Export]
(@moment datetime,
@CnlNum int,
@val1 float
)
AS
BEGIN
declare
@name varchar(20);SET NOCOUNT ON
set @name =
case
when @CnlNum = 385 then ‘UNSP_GPA1_power’
when @CnlNum = 402 then ‘UNSP_GPA2_power’
when @CnlNum = 451 then ‘UNSP_GPA3_power’
when @CnlNum = 418 then ‘UNSP_GPA4_power’
end;
Insert into dbo.data(moment,sensor,value) values (@moment,@name,@Val1)
END24.02.2019 в 21:17 #11195RomirosУчастникПопробуйте экспортировать все каналы в промежуточную таблицу, а уже в ней отбирать нужные Вам каналы, например используя триггеры на вставку или обновление в промежуточной таблице.
Мне кажется, что переполнение очереди происходит из-за того, что не все каналы экспортируются. Но это не точно :), нужно смотреть код модуля.25.02.2019 в 19:03 #11196MikhailМодераторДобрый день!
Отключите Коммуникатор и передавайте данные с помощью функции Генератор Сервера. Наблюдайте за очередью и за логом модуля экспорта ModDBExport.log. Есть ли ошибки в логе? Очередь может переполняться в случае, если при выполнении запроса возникает ошибка и, следовательно, очередь не уменьшается.
26.02.2019 в 11:04 #11197Komrade82УчастникНа рабочей скаде мне так экспериментировать не дадут. Интересен такой вопрос: когда запускается скрипт на запись в SQL — только при чтении нужных мне переменных или всех? Возможно ли заполнение очереди при пропуске выполения по IF?
26.02.2019 в 18:19 #11201MikhailМодераторКоммуникатор после сеанса опроса передаёт на сервер только изменившиеся теги. По каждому тегу срабатывает SQL-запрос. Однако через заданное в настройках Коммуникатора время передаются все теги КП, и для всех них также срабатывает SQL-запрос.
26.02.2019 в 18:21 #11202MikhailМодераторВозможно ли заполнение очереди при пропуске выполения по IF?
Что там в ModDBExport.log?
27.02.2019 в 19:59 #11206Komrade82УчастникЧерез некоторое время после старта все заполняется сообщениями о том, что очередь больше 100 и новые теги в очередь нельзя добавить.
27.02.2019 в 20:17 #11208MikhailМодераторРаботает ли простой SQL-запрос?
По описанию трудно понять причину. Могу подключиться и посмотреть, но это платная услуга.06.03.2019 в 09:28 #11227Komrade82УчастникПроверил запись всех текущих значений через INSERT — очередь переполняется.
Вопрос по экспорту архивных значений — триггер должен срабатывать раз в минуту или также по опросу данных коммуникатором?06.03.2019 в 18:25 #11232MikhailМодераторПроверил запись всех текущих значений через INSERT — очередь переполняется.
Наверное, поддержкой через форум в данном случае не обойтись.
Вопрос по экспорту архивных значений — триггер должен срабатывать раз в минуту или также по опросу данных коммуникатором?
Запрос для архивов сработает, только если устройство позволяет выкачивать архивные данные, например, теплосчетчик.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.