Отслеживание или уведомление об изменениях в БД - вставки и обновления в основном

StackOverflow https://stackoverflow.com/questions/320864

  •  11-07-2019
  •  | 
  •  

Вопрос

Как отслеживать или получать уведомления при вставке или обновлении записи в БД? Я хотел бы уведомить внешнее приложение об изменениях почти в реальном времени всякий раз, когда такие изменения происходят в БД. Существуют ли независимые от СУБД и языка прикладных программ способы сделать это? Если нет, то возможно ли это с MS Access и MS SQL Server в частности? Я, конечно, стараюсь избегать постоянного опроса БД.

Это было полезно?

Решение

С помощью SQL Server можно загрузить DLL внутри самого SQL Server и вызывать методы из этого с помощью расширенных хранимых процедур. Затем DLL может уведомить другие приложения - обычно через сокет TCP.

Другие советы

Я думаю, что последняя версия Microsoft SQL Server позволяет вам вызывать события в вашем .NET-коде на основе условий и событий сервера. Я не пробовал, и я не слышал ни о каком «независимом от СУБД» способе сделать это (без опроса БД каждые X миллисекунд).

С помощью MS-Access я отслеживаю изменения записей или дополнения записей с помощью полей в основной таблице, в которых хранятся имя пользователя и дата создания или обновления записи.

Вам нужно использовать Windows API для записи имени пользователя, которое обычно запускается при открытии формы коммутатора.

Я копаюсь, чтобы найти прочь, чтобы отслеживать конкретные изменения. Моя база данных используется для управления проектами. Я хотел бы отслеживать, что конкретно было изменено, а не только кто и когда это у меня сейчас.

Я думаю, что это соответствует требованиям исходного вопроса. Позже я могу добавить Windows API, который читает имя пользователя.

Private Sub Form_BeforeInsert (отменить как целое число)    Я! UserCreated = UCase (CurrentUser ())    Я! DateCreated = Сейчас () End Sub

Private Sub Form_BeforeUpdate (отменить как целое число)    Я! DateModified = Сейчас ()    Я! UserModified = UCase (CurrentUser ()) End Sub

- Майк

Чтобы сделать это с SQL Server, вы используете службу уведомлений - напишите dll, которая подписывается на уведомления из БД для обновлений данных, которые вы можете обрабатывать каким-либо образом.

Однако MS сказала, что они удаляют это из SQL Server 2008 .

В Oracle есть нечто подобное (хотя они, как правило, оставляют свои технологии на месте), но я не видел ничего, что было бы нейтральным к базе данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top