Оповещение об изменении таблицы 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С v8.3 Абонемент ($m)

Конфигурация для мониторинга и контроля над состоянием свободного дискового пространства на серверах.

3 стартмани

10.03.2025    330    2    slavik27    11    

3

Мониторинг Перенос данных 1C Системный администратор Программист Платформа 1С v8.1 1С:Розница 2 Россия Абонемент ($m)

Когда у вас много магазинов и хочется быстро понять, что происходит в РИБ с обменами, то все минимально необходимые данные можно увидеть на одной форме.

1 стартмани

06.03.2025    220    0    Nigl    0    

0

Перенос данных 1C Мониторинг Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Абонемент ($m)

Собирает в одном месте информацию о состоянии обменов данными между разными решениями на 1С.

3 стартмани

24.02.2025    2399    6    natz78    14    

4

Мониторинг Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Данная статья посвящена разработке интеграции 1С и Sentry, что позволяет сделать удобнее анализ ошибок. Также имеется возможность выгрузки замеров времени из 1С для расчета Apdex с целью анализа удовлетворенности пользователей скоростью работы информационной системы. В статье разобраны основные важные моменты при разработке представленной интеграции.

1 стартмани

24.01.2025    897    MC4RT    0    

4

Поиск данных Мониторинг Программист Платформа 1C v8.2 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 Россия Абонемент ($m)

Внешняя обработка ищет файлы и каталоги в выбранном каталоге, определяет их размер, сортирует по убывающей и заполняет таблицу.

1 стартмани

16.12.2024    418    0    ludmila777    8    

4

Логистика, склад и ТМЦ Мониторинг Маркетплейсы Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Платные (руб)

Расширение для 1С, которое автоматически «отлавливает» тарифы складов с наиболее выгодными коэффициентами для ваших товаров на маркетплейсе Wildberries. С помощью этого инструмента вы сможете легко находить и выбирать склады с лучшими условиями для максимизации своей прибыли. Удобная интеграция позволяет настроить регулярный поиск складов по выгодным коэффициентам в виде регламентного задания в 1С, что существенно экономит время и автоматизирует процесс принятия решений по размещению товаров. Всегда будьте на шаг впереди конкурентов и повышайте эффективность своего бизнеса с помощью «Ловца коэффициентов складов Wildberries»!

3600 руб.

14.11.2024    696    1    0    

4

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

Решение для управления ключевыми показателями компании, обеспечивающее гибкую настройку, визуализацию данных и эффективный контроль за достижением целей. Продукт сокращает трудозатраты на расчет и аналитику, позволяя быстрее принимать обоснованные решения. Легко интегрируется в любую конфигурацию 1С, предлагая интуитивный интерфейс, удобный для всех пользователей.

24000 руб.

11.11.2024    582    0    0    

1

Учет доходов и расходов Логистика, склад и ТМЦ Маркетплейсы Мониторинг Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Расширение модуля Synchrozon для удобного контроля габаритов на Ozon! Разработка позволяет мгновенно сравнивать установленные габариты товаров, с габаритами, указанными на Ozon, чтобы выявлять любые несоответствия. Поможет сократить расходы на логистику, гарантируя, что все данные о товарах остаются точными и актуальными.

3600 руб.

31.10.2024    596    1    0    

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

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

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

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