Rastreamento ou notificar DB Changes - inserções e atualizações na sua maioria
-
11-07-2019 - |
Pergunta
Como posso controlar ou ser notificado sempre que um registro é inserido ou atualizado em um banco de dados? Eu gostaria de notificar uma aplicação externa das mudanças quase em tempo real sempre que ocorrem tais mudanças no DB. Há DBMS de linguagem de programação e aplicação independentes maneiras independentes de fazer isso? Se não, então é possível com o MS Access e MS SQL Server em particular? Eu estou olhando para evitar polling contínuo de DB é claro.
Solução
Com o SQL Server, é possível carregar uma DLL dentro do próprio SQL Server e métodos de chamada a partir deste com procedimentos armazenados estendidos. O DLL poderia, então, notificar outros aplicativos -. Geralmente através de um soquete TCP
Outras dicas
Eu acho que a última versão do Microsoft SQL Server permite que você elevar eventos em seu código .NET com base nas condições de servidores e eventos. Eu ainda não tentei, e eu não ouvi falar de nenhum 'DBMS independente' maneira de fazer isso (sem polling DB a cada X milissegundos).
Com o MS-Access, I manter o controle de alterações de registro ou adições registro com campos na tabela principal que armazenar o nome de usuário ea data em que o registro é criado ou atualizado.
Você precisa usar a API do Windows para gravar o nome de usuário, geralmente executado quando formulário menu de controle é aberta.
Eu estou cavando para encontrar uma fora para acompanhar as mudanças específicas. Minha base de dados é usado para gerenciamento de projetos. Gostaria de acompanhar o que especificamente foi mudado, não apenas quem e quando que eu tenho agora.
Eu penso que este cumpre os requisitos da pergunta original. Mais tarde, pode adicionar o API do Windows que lê o nome do usuário.
Private Sub Form_BeforeInsert (Cancel As Integer) Me! UserCreated = UCase (CurrentUser ()) Me! DateCreated = Now () End Sub
Private Sub Form_BeforeUpdate (Cancel As Integer) Me! DateModified = Now () Me! UserModified = UCase (CurrentUser ()) End Sub
- Mike
Para fazer isso com o SQL Server, você usa o Serviço de Notificação -. Escrever uma dll que se inscreve para notificações da DB para atualizações de dados que você pode processar de alguma maneira
No entanto, MS disse que eles são removendo este a partir do SQL Server 2008 .
A Oracle tem algo semelhante (embora eles tendem a deixar a sua tecnologia no lugar), mas eu não vi nada que é banco de dados neutro.