Оповещение об изменении таблицы MS SQL

19.10.18

Администрирование - Мониторинг

Цель: подписка на изменения в таблицах MSSQL, неизменность конфигурации, использование популярного языка программирования c#, создание дальнейшей цепочки событий, не связанной с 1С.

Для оповещения об изменениях в MSSQL можно использовать класс SqlDependencyEx.

Он работает на основе MSSQL Service broker, который нужно предварительно включить, выгнав пользователей и запустив скрипт:

ALTER DATABASE dbName
            SET NEW_BROKER
            WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE dbName
            SET DISABLE_BROKER
GO
ALTER DATABASE dbName
            SET ENABLE_BROKER
GO
ALTER DATABASE dbName SET TRUSTWORTHY ON
go

Выясняем через SQL profiler таблицу, за которой мы хотим наблюдать.

1

И указываем эту таблицу в конструкторе класса, в котором создаются триггеры в таблицах. В триггерах идет отправка сообщений через MSSQL Service broker.

using ServiceBrokerListener.Domain;
using System;
using System.Data.SqlClient;

namespace MSSQLOrderChangeNotification
{
    class MSSQLOrderChangeNotification
    {
        static void Main(string[] args)
        {
            var listener = new SqlDependencyEx(connectionString, DbName, "_AccumRgT16572"); 
            //// e.Data contains actual changed data in the XML format
            listener.TableChanged += (o, e) =>
            {
                Console.WriteLine("Your table was changed!" + Environment.NewLine +
                e.NotificationType + Environment.NewLine + e.Data);
            };
            //// After you call the Start method you will receive table notifications with 
            //// the actual changed data in the XML format
            listener.Start();
            Console.WriteLine(" Press [enter] to exit.");
            Console.ReadLine();
            listener.Stop();
        }

    }

}

В итоге можем отправлять это событие куда угодно, используя все возможности C# .NET. Например, в RabbitMQ.

Класс несложный, и его можно переписать на другие языки при необходимости.

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

Вступайте в нашу телеграмм-группу Инфостарт

SqlDependencyEx sql c# .net оповещение событие подписка

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

28800 руб.

27.03.2025    55918    30    25    

44

Мониторинг Журнал регистрации Технологический журнал Системный администратор Программист Бесплатно (free)

Мониторинг в ландшафте 1С помогает не только вовремя выявлять проблемы и повышать SLA, но и укреплять информационную безопасность. Разбираем источники данных, ограничения штатных инструментов и современные практики мониторинга на базе Prometheus, ClickHouse и Grafana. А также рассказываем о коробочном решении «Оркестратор 1С-систем» и планах его развития.

29.10.2025    1042    Sibars    0    

4

Мониторинг Системный администратор Бесплатно (free)

Рассказываем, куда смотреть после миграции на PostgreSQL: как диагностировать нехватку или избыток буферного кэша, отслеживать работу автовакуума, репликации и чекпойнтера. На основе реальных аудитов покажем ключевые инструменты мониторинга и научим правильно интерпретировать их данные.

06.10.2025    1796    expnpe    1    

9

Журнал регистрации Мониторинг Программист 1С:Предприятие 8 Россия Абонемент ($m)

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

1 стартмани

27.08.2025    2027    5    Elkasar    1    

2

Мониторинг Системный администратор Программист Бесплатно (free)

Администраторы следят за серверами и оборудованием, но кто следит за 1С? Показываем, как на базе только стандартного стека 1С упаковать RAS и построить простую систему мониторинга и оповещений без КИП, ТЖ и сложных инструментов. В статье – рабочие приемы, паттерны и лайфхаки, которые позволяют вовремя реагировать на проблемы и получать аналитику без лишних затрат.

25.08.2025    3085    evvakra    2    

6

Инструменты администратора БД Мониторинг Системный администратор Программист Россия Бесплатно (free)

Система мониторинга и автоматизации рутинных операций обслуживания информационных баз 1С:Предприятие.

16.07.2025    3050    0    akpaevj    14    

36

Журнал регистрации Мониторинг Пользователь 1С:Предприятие 8 Россия Абонемент ($m)

Узнайте, кто, что и когда менял в ваших справочниках и документах! Гибкий и быстрый отчет на основе журнала регистрации с удобной фильтрацией! Отчет покажет все действия пользователей на основании журнала регистрации по двум основным типам объектов в 1С.

1 стартмани

19.06.2025    1829    23    Yellow_Cube    9    

4

Закрытие периода Мониторинг Программист Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

Отображение факта выполнения фоновых заданий Закрытия месяца конфигурации Бухгалтерия предприятия на отдельной области рабочего стола. Пример работы с фоновыми заданиями в БП.

1 стартмани

06.06.2025    1286    0    annak2906    0    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. МихаилМ 01.08.17 17:01 Сейчас в теме
какое применение технологии применительно к 1с ?

при реструктуризации таблицы триггер либо будет удален либо дисейбится.

технология асинхронная.
2. yaxinr 57 01.08.17 22:27 Сейчас в теме
(1) реструктуризация происходит не часто и изменение C# программы занимает не больше часа времени.
и вышел анонс в котором говорится
Добавление или удаление столбцов таблиц. Эти операции проводятся теперь на текущих таблицах

при перезапуске программы триггеры пересоздаются.
да - технология асинхронная и в этом суть событийно-ориентированной архитектуры
Для отправки сообщения требуется регистрация/авторизация