En allant si la question de l'entretien SQL Server dans le livre de MR. Shiv Prashad Koirala. J'ai appris à savoir que, même après avoir utilisé la commande TRUNCate Table, les données peuvent être récupérées. P>
S'il vous plaît dites-moi comment pouvons-nous récupérer des données lorsque les données sont supprimées à l'aide de la commande 'Supprimer' et comment les données peuvent être récupérez si les données sont supprimées à l'aide de "tronquacer". p>
Ce que je sais, c'est que lorsque nous utilisons la commande Supprimer pour supprimer des enregistrements, l'entrée de celle-ci est effectuée dans le fichier journal, mais je ne sais pas comment récupérer les données de et comme je lis que la table tronquée n'entre aucune entrée de journal dans base de données alors comment peut-elle aussi être récupérée? P>
Si vous pouvez me donner un bon lien pour le faire pratiquement pas à pas que cela ne sera une bonne aide pour moi. p>
J'ai reçu SQL Server 2008. P>
merci p>
4 Réponses :
Si vous utilisez des transactions dans votre code, TronCate peut être renvoyé. S'il n'y a pas de transaction n'est utilisé et que la tronquée fonctionne est commise, il ne peut pas être récupéré à partir du fichier journal. Tronquez est une opération DDL et il n'est pas connecté Fichier journal.
Supprimer et tronquer les deux peuvent être renvoyés lorsqu'il est entouré de transaction si la session en cours n'est pas fermée. Si le tronquage est écrit dans l'éditeur de requêtes entouré d'une transaction et si la session est fermée, elle ne peut pas être renvoyée, mais supprimer peut être rétabli. P>
USE tempdb GO -- Create Test Table CREATE TABLE TruncateTest (ID INT) INSERT INTO TruncateTest (ID) SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 GO -- Check the data before truncate SELECT * FROM TruncateTest GO -- Begin Transaction BEGIN TRAN -- Truncate Table TRUNCATE TABLE TruncateTest GO -- Check the data after truncate SELECT * FROM TruncateTest GO -- Rollback Transaction ROLLBACK TRAN GO -- Check the data after Rollback SELECT * FROM TruncateTest GO -- Clean up DROP TABLE TruncateTest GO
Truncate est enregistré et peut être "Rouled Retour" en restauré à partir de la base de données ou des sauvegardes de connexion de la même manière que la suppression de la boîte.
Si votre base de données est en mode de récupération complète, vous pouvez récupérer des données soit par l'article de l'étape complète tronquée, supprimée ou supprimée à l'étape terminée, c'est ici code.abhayprince.com/article/...
@nvogel, Cet article est un exemple à une telle restauration ou avez-vous eu autre chose en tête?
Si des données tronquées peuvent être récupérées à partir de la base de données ou des sauvegardes de journal, pourquoi est-ce une réponse acceptée? - Cette réponse se lit comme suit: "S'il n'y a pas de transaction n'est utilisé et que la tronquée fonctionne est commise, il ne peut pas être récupéré à partir du fichier journal."
SQL Server conserve l'entrée (page # et numéro de fichier) des enregistrements tronqués et de ces enregistrements, vous pouvez facilement parcourir de la requête ci-dessous. Une fois que vous avez obtenu l'ID de page et l'ID de fichier, vous pouvez le mettre dans la page DBCC pour retirer l'enregistrement complet.
SELECT LTRIM(RTRIM(Replace([Description],'Deallocated',''))) AS [PAGE ID] ,[Slot ID],[AllocUnitId] FROM sys.fn_dblog(NULL, NULL) WHERE AllocUnitId IN (Select [Allocation_unit_id] from sys.allocation_units allocunits INNER JOIN sys.partitions partitions ON (allocunits.type IN (1, 3) AND partitions.hobt_id = allocunits.container_id) OR (allocunits.type = 2 AND partitions.partition_id = allocunits.container_id) Where object_id=object_ID('' + 'dbo.Student' + '')) AND Operation IN ('LOP_MODIFY_ROW') AND [Context] IN ('LCX_PFS') AND Description Like '%Deallocated%'
Par défaut, aucun de ces deux ne peut être retourné mais il y a des cas particuliers lorsque cela est possible. P>
tronquage strong>: lorsque TronCate est exécuté SQL Server ne supprime pas les données, mais uniquement des pages de traitement. Cela signifie que si vous pouvez toujours lire ces pages (à l'aide de la requête ou de l'outil tiers), il est possible de récupérer des données. Cependant, vous devez agir rapidement avant que ces pages soient écrasées. P>
Supprimer STRAR>: Si la base de données est en mode de récupération complète, toutes les transactions sont enregistrées dans le journal des transactions. Si vous pouvez lire le journal des transactions, vous pouvez en théorie de déterminer quelles étaient les valeurs précédentes de toutes les lignes affectées, puis récupérez les données. P>
une méthode utilise des requêtes SQL similaires à celle postée ici pour
tronquer ou utiliser des fonctions telles que fn_dblog pour lire le journal des transactions. P> li>
Un autre est d'utiliser des outils tiers tels que Apexsql Journal , SQL LOG
Rescue , Apexsql Récupérez ou Quest TOAD P> LI>
ul>
Si votre base de données est en mode de récupération complète, vous pouvez récupérer des données soit par tronquée, supprimée ou supprimée. L'article complet étape par étape est ici HTTPS: / /Codingfry.blogspot.com/2018/09/how-to-recover-data-de-trunated.html p>