Suivi ou notification des modifications de la base de données - Inserts et mises à jour principalement

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

  •  11-07-2019
  •  | 
  •  

Question

Comment suivre ou recevoir une notification lorsqu'un enregistrement est inséré ou mis à jour dans une base de données? Je souhaite informer une application externe des modifications en temps quasi réel chaque fois que de telles modifications se produisent dans DB. Existe-t-il des méthodes indépendantes du langage de programmation d'applications et du SGBD? Sinon, est-ce possible avec MS Access et MS SQL Server en particulier? Je cherche bien sûr à éviter une interrogation continue de la base de données.

Était-ce utile?

La solution

Avec SQL Server, il est possible de charger une DLL dans SQL Server même et d’appeler des méthodes à partir de celle-ci avec des procédures stockées étendues. La DLL pourrait alors notifier d’autres applications, généralement via un socket TCP.

Autres conseils

Je pense que la dernière version de Microsoft SQL Server vous permet de déclencher des événements dans votre code .NET en fonction des conditions et des événements du serveur. Je ne l'ai pas essayé et je n'ai entendu parler d'aucun moyen "indépendant de SGBD" de le faire (sans interroger la base de données toutes les X millisecondes).

Avec MS-Access, je garde une trace des modifications d’enregistrements ou des ajouts d’enregistrements avec des champs de la table principale contenant le nom d’utilisateur et la date de création ou de mise à jour de l’enregistrement.

Vous devez utiliser une API Windows pour enregistrer le nom d'utilisateur, généralement exécuté à l'ouverture du formulaire de tableau de contrôle.

Je suis en train de creuser pour trouver un moyen de suivre des modifications spécifiques. Ma base de données est utilisée pour la gestion de projet. Je voudrais garder une trace de ce qui a été spécifiquement changé, pas seulement de qui et de quand j'ai maintenant.

Je pense que cela répond aux exigences de la question initiale. Je peux ajouter plus tard l'API Windows qui lit le nom de l'utilisateur.

Private Sub Form_BeforeInsert (Annuler en tant qu'entier)    Me! UserCreated = UCase (CurrentUser ())    Moi! DateCreated = Maintenant () End Sub

Private Sub Form_BeforeUpdate (Annuler en tant qu'entier)    Moi! DateModified = Now ()    Me! UserModified = UCase (CurrentUser ()) End Sub

- Mike

Pour ce faire avec SQL Server, vous utilisez le service de notification - écrivez une dll abonnée aux notifications de la base de données pour les mises à jour des données que vous pouvez traiter d'une manière ou d'une autre.

Cependant, MS a déclaré qu’il s’agissait de supprimer ceci à partir de SQL Server 2008 .

Oracle a quelque chose de similaire (bien qu'ils aient tendance à laisser leur technologie en place), mais je n'ai rien vu qui soit neutre en base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top