Annuler une transaction

Je suis en train de mettre à jour certaines données dans un tableau en utilisant la transaction. Le journal des transactions est disponible dans les files ldf de la database. Maintenant, par erreur, un user a commis une transaction de suppression d'loggings et il s'est engagé et datatables ont été supprimées. Il est donc possible de revenir sur cette transaction particulière. Veuillez suggérer. J'apprécierais vraiment votre aide.

Merci,

Vous ne pouvez pas annuler une transaction validée.

Vous allez avoir une « récupération ponctuelle » de la database avant la validation de la transaction. Vous démarrez à partir de la dernière sauvegarde complète avant l'incident, puis appliquez le dernier différentiel avant l'incident, puis tous les journaux le point d'intérêt, et arrêtez au moment de l'incident, lorsque vous récupérez la database sans appliquer tout autre journal. Plus de détails dans le lien. Si d'autres transactions doivent être récupérées après ce moment, vous pouvez restaurer une copy de la database au moment de l'erreur, puis copyr manuellement datatables supprimées de la database de copy dans la database réelle.

La lecture d'un journal de transactions à l'aide des fonctions et des commands SQL Server embeddedes, telles que fn_dblog et DBCC LOGINFO peut s'avérer difficile, car toutes datatables sont stockées au format hexadécimal. L'interrogation manuelle et la conversion sont nécessaires pour get datatables lisibles. Ce sont des fonctions non documentées et ne peuvent pas donner des résultats hors de la boîte. Théoriquement, vous pouvez refind l'logging supprimé et voir ce qui a été supprimé

S'il vous plaît noter que le model de récupération est également très important quand il s'agit de la récupération des données, model FULL ou BULK LOGGED devrait être utilisé

En ce qui concerne la récupération à un moment donné, vous pouvez jeter un oeil à l' article qui décrit la procédure à l'aide de SQL Server Management Studio et de l'outil tiers appelé ApexSQL Log . Il existe également d'autres outils tiers tels que SQL Rescue de RedGate. Veuillez noter que vous devez fournir une string complète de sauvegardes du journal des transactions: une sauvegarde complète de la database existe, ou une sauvegarde complète de la database, puis des sauvegardes de bases de données différentielles et ensuite la string de sauvegarde du journal des transactions. à time vous voulez la récupération de données.

Disclaimer: Je travaille pour ApexSQL en tant qu'ingénieur support

De plus, pour les solutions précédentes (c.-à-d. Ci-dessus), vous pouvez utiliser l'option "WITH STANDBY = 'filename'" dans les commands de restauration du journal. Cela vous permettra de lire la database entre les restaurations, ce qui facilite la récupération des données.

Si c'est SQL 2000 et que vous avez une sauvegarde complète et des files de sauvegarde du journal des transactions, vous pouvez utiliser un outil qui vous permettra d'extraire les scripts d'annulation. Il repose toujours sur une sauvegarde restaurable et sur les files du journal des transactions, mais vous permet de filterr les journaux de transactions et d'extraire le SQL dans un script. Je n'ai pas de copy à scope de la main, mais celle-ci était disponible gratuitement auprès de l'un des principaux fournisseurs d'outils SQL (par exemple, Quest, Red Gate, Idera).