Domanda

Nel nostro DB di test mancano improvvisamente righe. Li rivogliamo.

C'è un modo per setacciare tutto ciò che è successo al database oggi? Ogni istruzione SQL? Presumo che questo tipo di cose si trovi nel registro delle transazioni, ma non sono sicuro di come visualizzarle.

Esiste un modo per annullare le operazioni di eliminazione?

A proposito: Sì, abbiamo un backup, ma preferirei trovare anche la causa dell'eliminazione ...

È stato utile?

Soluzione

Puoi farlo con alcuni degli strumenti di Red Gate , ma costa. Dai un'occhiata a SQL Log Rescue .

Altrimenti, sarei tentato di fare un ripristino.

Altri suggerimenti

[risposta tardiva ma si spera utile]

Esiste un modo per ripristinare le righe eliminate utilizzando il registro delle transazioni, ma solo se si utilizzano strumenti di terze parti e solo il database è in modalità di ripristino completo.

Dell (precedentemente Quest) ha Toad per SQL Server e ApexSQL ha Log ApexSQL e ApexSQL Recover che può anche leggere t-log e recuperare dati. Sfortunatamente Log Rescue da Red Gate può solo leggere i log su SQL Server 2000.

Esiste anche un modo per leggere t-log usando il comando dbcc log non documentato. Vedi maggiori dettagli qui .

Considerando che si dispone già di backup del database, è possibile ripristinarli in un database separato e quindi utilizzare uno dei molti strumenti di confronto dei dati esistenti sul mercato per inserire i dati mancanti nel database di produzione. Ovviamente questo può solo recuperare la cancellazione dei dati prima di creare un backup.

Per farlo è necessario uno strumento di terze parti. Lo strumento deve essere in grado di accedere ai registri delle transazioni e visualizzare le voci del registro in modo da poter vedere cosa è successo. Non ho usato nessuno di questi strumenti, ma per cominciare proverei SQL Log Rescue di Red Gate. Provalo:

http://www.red-gate.com/products/SQL_Log_Rescue /index.htm

Proverei ChronicDB che ha una versione gratuita anziché pagare per Red Gate

http://chronicdb.com/blogs/undelete_from_whoops

È possibile annullare una transazione utilizzando il comando Rollback in SQL Server. Tuttavia, devi sapere che è possibile eseguire il rollback della transazione se la transazione è stata eseguita all'interno della transazione Begin .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top