Запустить события из SQL Server в Azure Event Hub - PullRequest
0 голосов
/ 11 октября 2018

У меня есть локальный SQL Server 2008R2.Мне нужно отправлять строки как событие в возможно Azure Event Hub из нескольких таблиц всякий раз, когда есть новая строка или модификация существующей строки.

Это делается для облегчения приема в реальном времени с сервера sql в Azure Vent Hub.всякий раз, когда происходят какие-либо изменения.

Обратите внимание на следующие моменты:

  1. Ни в одной из таблиц нет надежной метки времени или столбца IDENTITY
  2. Нет CDC или отслеживание изменений включено
  3. Невозможно изменить схему или создать новые объекты базы данных (например, триггер, хранимую процедуру и т. Д.)очки для рассмотрения.Любые идеи, спасибо.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Просто концепция, поскольку решение относительно велико:

Поскольку вам не разрешено что-либо менять в схеме / конфигурации базы данных, тогда возможный подход может заключаться в использовании запланированной функции / логикиприложение, чтобы периодически запрашивать ваш SQL Server и затем выводить в концентратор событий.Для такого рода операций я лично предпочел бы функции, потому что у меня был бы более подробный контроль над обработкой.Так или иначе, обе службы должны работать.

Интервал, с которым вы будете запрашивать SQL Server, полностью зависит от того, насколько быстро изменяются ваши исходные данные.

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

  • того, что было изменено, из тех событий, которые уже прочитаны (идентифицируются по их уникальному идентификатору)
  • что было удалено из тех событий, которые уже прочитаны (идентифицированы по их уникальному идентификатору)
  • что было добавлено - не присутствует в тех событиях, которые уже прочитаны (идентифицированы по их уникальному идентификатору)

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

Надеюсь, это поможет.

0 голосов
/ 12 октября 2018

Вы просматривали аудит баз данных?

Вы упомянули концентратор событий Azure, но не указали, куда будут отправляться данные после попадания в концентратор событий.Концентратор событий не является хранилищем данных, но помещает события в очередь для последующей обработки - так какова ваша окончательная обработка, так как это может также намекать на другие возможные решения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...