J'ai une configuration de table d'audit qui reflète essentiellement l'une de mes tables avec une date, un utilisateur et un type de commande. Voilà comment cela pourrait ressembler à:Suppression périodique des lignes dans TSQL
AuditID UserID Individual modtype user audit_performed
1 1239 Day Meff INSERT dbo 2010-11-04 14:50:56.357
2 2334 Dasdf fdlla INSERT dbo 2010-11-04 14:51:07.980
3 3324 Dasdf fdla DELETE dbo 2010-11-04 14:51:11.130
4 5009 Day Meffasdf UPDATE dbo 2010-11-04 14:51:12.777
Étant donné que ces types de tables peuvent obtenir grande assez rapide - je pensais à mettre dans une sorte de suppression automatique des lignes anciennes. Donc par exemple si j'ai 3 mois d'histoire - si je pouvais effacer le premier mois tout en conservant les deux derniers. Et encore une fois tout cela doit être automatique - j'imagine qu'une fois qu'une certaine date est atteinte, une requête active et supprime le mois le plus ancien avec des données d'audit. Quelle est la meilleure façon de procéder? J'utilise SQL Server 2005 en passant.?
J'éviterais de créer un déclencheur sur l'audit pour supprimer les anciennes entrées. Cela vous donnera seulement un billet de première classe dans un monde de douleur - surtout si vous créez l'entrée d'audit en utilisant un déclencheur en premier lieu. La meilleure option consisterait à planifier un travail d'agent SQL quotidien à un moment où il n'y aura pas ou peu d'activité dans la table d'audit. Oh et à un moment qui n'interfère pas avec vos plans de sauvegarde et de maintenance. – codingbadger