Переполнение очереди ModDBExport и пропуски в передаче данных.

Стартовая страница Форумы Ошибки в работе Ошибки Сервера Переполнение очереди ModDBExport и пропуски в передаче данных.

Помечено: 

Просмотр 10 сообщений - с 1 по 10 (из 10 всего)
  • Автор
    Сообщения
  • #11194
    Komrade82
    Участник

    Добрый день. Я организовал передачу текущих данных с четырех каналов раз в минуту в базу 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
    GO

    ALTER 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)
    END

    #11195
    Romiros
    Участник

    Попробуйте экспортировать все каналы в промежуточную таблицу, а уже в ней отбирать нужные Вам каналы, например используя триггеры на вставку или обновление в промежуточной таблице.
    Мне кажется, что переполнение очереди происходит из-за того, что не все каналы экспортируются. Но это не точно :), нужно смотреть код модуля.

    #11196
    Mikhail
    Модератор

    Добрый день!

    Отключите Коммуникатор и передавайте данные с помощью функции Генератор Сервера. Наблюдайте за очередью и за логом модуля экспорта ModDBExport.log. Есть ли ошибки в логе? Очередь может переполняться в случае, если при выполнении запроса возникает ошибка и, следовательно, очередь не уменьшается.

    #11197
    Komrade82
    Участник

    На рабочей скаде мне так экспериментировать не дадут. Интересен такой вопрос: когда запускается скрипт на запись в SQL — только при чтении нужных мне переменных или всех? Возможно ли заполнение очереди при пропуске выполения по IF?

    #11201
    Mikhail
    Модератор

    Коммуникатор после сеанса опроса передаёт на сервер только изменившиеся теги. По каждому тегу срабатывает SQL-запрос. Однако через заданное в настройках Коммуникатора время передаются все теги КП, и для всех них также срабатывает SQL-запрос.

    #11202
    Mikhail
    Модератор

    Возможно ли заполнение очереди при пропуске выполения по IF?

    Что там в ModDBExport.log?

    #11206
    Komrade82
    Участник

    Через некоторое время после старта все заполняется сообщениями о том, что очередь больше 100 и новые теги в очередь нельзя добавить.

    #11208
    Mikhail
    Модератор

    Работает ли простой SQL-запрос?
    По описанию трудно понять причину. Могу подключиться и посмотреть, но это платная услуга.

    #11227
    Komrade82
    Участник

    Проверил запись всех текущих значений через INSERT — очередь переполняется.
    Вопрос по экспорту архивных значений — триггер должен срабатывать раз в минуту или также по опросу данных коммуникатором?

    #11232
    Mikhail
    Модератор

    Проверил запись всех текущих значений через INSERT — очередь переполняется.

    Наверное, поддержкой через форум в данном случае не обойтись.

    Вопрос по экспорту архивных значений — триггер должен срабатывать раз в минуту или также по опросу данных коммуникатором?

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

Просмотр 10 сообщений - с 1 по 10 (из 10 всего)
  • Вы должны авторизироваться для ответа в этой теме.