Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Surveillez une table de nouveaux enregistrements dans la base de données sql

Voici mes propositions :

  1. Si vous êtes en mesure d'ajouter une table en double à la base de données, voici une solution. Vous avez votre table1 et table2 (Copie de table1 ). Lorsque vous insérez de nouveaux enregistrements dans table1 , vous pouvez les comparer avec des enregistrements existants dans votre table2 et ainsi trouver de nouveaux records. Après avoir comparé, vous devez ajouter tous les nouveaux enregistrements à table2 . C'est une sorte de synchronisation. Cela peut être fait via une procédure stockée ou par programmation.

  2. Vous n'avez pas besoin d'autres tables. Vous pouvez stocker toutes vos données dans le cache de votre application et vérifier avec un certain temps (par exemple 5 secondes) s'il y a de nouveaux événements qui n'existent pas dans votre cache. S'ils n'existent pas, notifiez-les dans votre journal ou ailleurs et ajoutez-les au cache. Mais s'il y a trop d'enregistrements, le temps de traitement sera fortement augmenté + consommation de mémoire.

  3. Si vous êtes en mesure de changer db, vous pouvez ajouter quelque chose comme la colonne 'isNew' à votre table. Lorsqu'une nouvelle donnée provient du site Web, la colonne sera "vraie", votre programme peut en faire le suivi et, après le traitement, définir cet indicateur sur faux pour chaque enregistrement. (Si le site Web ne peut pas définir cet indicateur, vous pouvez utiliser SQL TRIGGER AFTER INSERT pour définir la valeur de l'indicateur sur true. Le site Web ne peut même pas connaître cette fonctionnalité s'il s'agit d'un site Web tiers ou si vous ne voulez rien y changer)

  4. Voici un article sur le suivi des modifications EF :http://blogs.msdn.com/b/adonet/archive/2009/06/10/poco-in-the-entity-framework-part-3-change-tracking-with- poco.aspx

Mais le problème est que vous devez vérifier toute la table pour les modifications via EF qui affecteront les performances de votre application.

Voici des informations utiles sur le suivi des modifications côté SQL Server et les concepts d'implémentation :http://www.mssqltips.com/sqlservertip/1819/using-change-tracking-in-sql-server-2008/http://msdn.microsoft. com/en-us/library/bb933994.aspx