Vérifiez les modifications apportées à une table SQL Server?

Comment puis-je surveiller une base de données SQL Server pour que les modifications d'une table, sans l'aide de déclencheurs ou de la modification de la structure de la base de données d'une façon quelconque? Mon préféré environnement de programmation est .NET et C#.

J'aimerais être capable de supporter tous les SQL Server 2000 SP4 ou plus récent. Ma demande est un boulon sur la visualisation des données pour un autre produit d'une entreprise. Notre base de clients est dans les milliers, donc je ne veux pas avoir à mettre dans les exigences que l'on modifie le fournisseur tiers du tableau à chaque installation.

Par "modifications apportées à une table" je veux dire des modifications aux données de table, pas de changements à la structure de la table.

En fin de compte, je voudrais le changer pour déclencher un événement dans mon application, au lieu d'avoir à rechercher les modifications sur un intervalle.


Le meilleur cours de l'action compte tenu de mes besoins (pas de déclencheurs ou de modification de schéma, SQL Server 2000 et 2005) semble être d'utiliser le BINARY_CHECKSUM fonction dans T-SQL. La façon dont j'ai l'intention de mettre en œuvre est: est-ce

Toutes les X secondes d'exécuter la requête suivante:

SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
FROM sample_table
WITH (NOLOCK);

Et de la comparer à l'encontre de la valeur stockée. Si la valeur a changé, passer par le tableau ligne par ligne, en utilisant la requête:

SELECT row_id, BINARY_CHECKSUM(*)
FROM sample_table
WITH (NOLOCK);

Et de comparer les sommes retournés à l'encontre des valeurs stockées.

  • Ils n'arrivent pas à mettre de dernière modification d'horodatage sur leurs lignes, ont-ils?
InformationsquelleAutor TimM | 2008-08-01