it-swarm-eu.dev

Jak získám zpět některé smazané záznamy?

Chybně jsem odstranil přibližně 2 000 000 záznamů ze vzdálené tabulky serveru SQL Server 2008. Server mi neuděluje přístup k záložním souborům na straně serveru.

Existuje nějaký způsob, jak získat tyto záznamy?

49
user755

Je vaše databáze v úplném režimu obnovy?

  • Pokud ano, děláte zálohy protokolu transakcí?

    • Pokud ano, máte nástroj pro zálohování, jako je Quest LiteSpeed, Red Gate SQL Backup nebo Idera SQLSafe?
      • Pokud ano, tyto obslužné programy mohou obnovit objekty ze záložních souborů (včetně fulls a logů transakcí) - ale vysvětlení, jak je používat, přesahuje rámec toho, co zde mohu udělat. Pokyny získáte od prodejce.
      • Pokud ne, obnovte úplné protokoly záloh a transakcí jako databázi s jiným názvem. (Nepřepisujte existující databázi.) Než dojde k odstranění, budete moci získat kopii objektu až do druhé sekundy, ale budete muset zadat stopat část příkazu restore. kdy zastavit obnovení příkazů. Před odstraněním se musíte zastavit.
    • Pokud ne, vezměte si kopii obslužného programu pro čtení protokolů, jako je Quest LiteSpeed ​​nebo Apex SQL Log. Tyto obslužné programy se mohou připojit k databázovému serveru, prozkoumat soubor protokolu a pomoci vám vrátit transakce zpět. Nejsem si jistý, jestli demo verze budou fungovat, ale ty placené určitě ano.
  • Pokud ne (není v režimu úplné obnovy), obnovte poslední úplnou zálohu jako databázi s jiným názvem. (Nepřepisujte databázi, kterou již máte.) Odtud budete moci obnovit všechny záznamy, které byly v době zálohy online, ale od té doby ztratíte všechny změny.

118
Brent Ozar

SQL Server udržuje protokoly pro každý odstraněný záznam. Tyto protokoly můžete dotazovat pomocí fn_dblog Funkce serveru SQL.

SELECT [RowLog Contents 0] 
FROM   sys.fn_dblog(NULL, NULL) 
WHERE  
       AllocUnitName = 'dbo.TableName'        
   AND Context IN ( 'LCX_MARK_AS_GHOST', 'LCX_HEAP' )        
   AND Operation in ( 'LOP_DELETE_ROWS' )   
;

Tento protokol je však ve formátu Hex a je třeba převést tento formát Hex na skutečná data.

Následující článek vám pomůže obnovit smazané záznamy výše uvedeným způsobem:

http://raresql.com/2011/10/22/how-to-recover-deleted-data-from-sql-sever/

30
user1059637

Bohužel vám nebudeme moci pomoci bez mnohem více informací. Ale z vaší otázky vidím, že jste z databáze odstranili 2 miliony záznamů. S největší pravděpodobností nemůžete tyto informace obnovit, pokud nemáte úplné přihlášení do databáze a nezakoupíte si některé velmi specifické nástroje.

Pokud můžete podrobněji popsat, co si myslíte, že jste udělali, a proč máte pocit, že nemůžete získat záznamy zpět a můžete popsat organizaci vaší databáze, můžeme vám trochu pomoci.

Několik obecných rad: pokud si myslíte, že jste smazali 2 miliony záznamů, pravděpodobně jste právě teď trochu vyděšený. Měli byste si tedy udělat pětiminutovou přestávku, uklidnit se a problém znovu projít. Také byste měli okamžitě informovat svého šéfa, pokud je to rozumné (nebuďte někoho ve 2 ráno, aby jim to řekl) a že pracujete na řešení. Je lepší připustit, co se stalo, než zběsilě se snažit vzpamatovat a potenciálně zhoršit záležitosti a skrýt detaily. S vědomím, že váš šéf může nějakým způsobem pomoci, vám pomůže problém vyřešit. Jak jsem řekl, jen několik obecných rad.

22
jcolebrand