Comment savez-vous si une table SQL a été changé depuis la dernière fois que vous l'avez utilisé?

Est-il un moyen de savoir si les données dans un Serveur SQL server 2008 R2 tableau a changé depuis la dernière fois que vous l'avez utilisé? Je voudrais savoir de n'importe quel type de changement -- que ce soit un nouveau record a été inséré ou un existant a été modifié ou supprimé.

Je ne suis pas intéressé à ce que le changement aurait pu être. Je suis seulement intéressé par une valeur booléenne qui indique si oui ou non les données de la table a été modifiée.

Enfin, je veux une solution simple qui ne nécessite pas de l'écriture d'un déclencheur pour chaque opération CRUD et alors que le déclencheur de mise à jour de certains autres journaux de la table.

J'ai le C# programme qui vise à insérer une grande quantité de données initiales dans certains tables de base de données. C'est une opération qui est censé se produire une seule fois ou, plus rarement, jamais, si jamais, dans la vie de l'application. Cependant, au cours du développement et de test, bien que, nous utilisons ce programme beaucoup.

Actuellement, avec plus de 10 tables qu'il insère des données dans, chacun ayant environ 21 000 lignes par table, le programme prend environ 45 secondes pour s'exécuter. Ce n'est pas vraiment un énorme problème, car c'est une opération ponctuelle qui est de toute façon va être fait à l'interne avant l'expédition du produit au client.

Encore, je tiens à minimiser ce temps. Donc, je veux pas insérer des données dans une table, si il n'y a eu aucun changement dans les données de la table depuis mon dernier programme utilisé.

Mon collègue m'a dit que je pouvais utiliser le CHECKSUM_AGG fonction en T-SQL. Ma question(s) sont les suivants:

1) Si je calcule l' CHECKSUM_AGG(Cast(NumericPrimaryKeyIdColumn AS int)), alors la somme de contrôle ne change qu'une nouvelle ligne a été ajoutée ou un existant supprimé, non? Si quelqu'un a seulement modifié les valeurs des autres colonnes d'une ligne existante dans la table, qui n'aura pas d'impact sur la somme de contrôle total de la colonne ID, droit? Ou sera-ce?

2) Est-il un autre moyen pour que je puisse résoudre le problème de savoir si les données de la table a changé depuis la dernière fois que mon programme?

Pouvez-vous ajouter une colonne pour indiquer lorsque vous mettez à jour un enregistrement? Et puis requête à l'encontre de cette colonne?
C'est certainement une option à penser. Merci. Même si je ne suis pas sûr si mon client me permettra de le faire.
comment combat ajouter un rowversion dans vos colonnes? ligne version incrémente automatiquement après une mise à jour, modifier, supprimer et ajouter dans votre base de données assurez-vous juste d'avoir une autre colonne ou de table qui enregistre la dernière valeur de votre rowversions de sorte que vous pouvez suivre les modifications/les fichiers qui ont été modifiés.

OriginalL'auteur Water Cooler v2 | 2013-11-18