Отслеживание или уведомление об изменениях в БД - вставки и обновления в основном - PullRequest
0 голосов
/ 26 ноября 2008

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

Ответы [ 4 ]

1 голос
/ 26 ноября 2008

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

1 голос
/ 26 ноября 2008

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

0 голосов
/ 24 августа 2009

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

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

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

0 голосов
/ 06 января 2009

С помощью 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

- Майк

...