2016-05-11 1 views
4

Je regarde les tables temporelles de SQL Server 2016 et je ne trouve aucun moyen efficace d'interroger tous les enregistrements historiques qui sont maintenant supprimés.Quelle est la meilleure façon d'interroger des enregistrements supprimés avec des tables temporelles SQL Server 2016?

Je préfère ne pas supprimer ou déplacer vers un «tableau des éléments supprimés», car je pense que les tables temporelles sont redondantes.

Est-ce que cela peut être réalisé avec des tables temporelles de manière efficace?

Répondre

4

Les tables temporelles sont conçues pour vous donner une vue ponctuelle de vos données, et non une vue d'état: elles ne comprennent pas réellement l'état. Rien n'est exposé aux utilisateurs pour déterminer comment une ligne est arrivée dans la table d'historique temporelle.

Si vous n'avez pas temporairement suspendu/arrêté le versionnement du système sur votre table temporelle, il vous suffit de trouver le delta entre la table d'historique et la table active. Toutes les lignes restantes dans la table d'historique qui n'ont pas de ligne correspondante dans la table active sont des lignes supprimées. Par exemple, si vous avez tblCustCalls et qu'il est activé pour temporal avec un tblCustCallsHistory, par exemple SELECT * FROM tblCustCallsHistory WHERE ID NOT IN (SELECT ID FROM tblCustCalls). Dans cet exemple, ID est la clé primaire. Vous pouvez optimiser le TSQL si les tables sont très grandes mais le concept de base ne change pas.

+0

Merci. J'espérais ne pas faire de comparaison. Votre état d'explication a du sens. –