Отслеживание или уведомление об изменениях в БД - вставки и обновления в основном
-
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 есть нечто подобное (хотя они, как правило, оставляют свои технологии на месте), но я не видел ничего, что было бы нейтральным к базе данных.