Restaurarea Skype povești de lilieci (), savepearlharbor

Restaurarea Skype povești de lilieci (), savepearlharbor
Promuchavshis din nou pentru a restabili baza de pobivsheysya, a decis să schițeze un ghid rapid, am fost în stare să recupereze aproape întreaga istorie a mesajelor Skype. Experții SQLite3 sunt invitați să scrie o modalitate mai bună decât m-am simțit la întâmplare.

preistorie

OS reinstalate Win7, set skype (6), copiat în mod obișnuit întregul dosar profil din cele mai vechi:
% AppData% \ Roaming \ Skype \ moy_profil \
într-o nouă locație.

Instrumente și materiale

analizam baze de date

Informații pentru administratori, programatori și utilizatori experimentați

2. Deschideți fișierul main.db (aproximativ 150 megaocteți pentru mine).

3. Baza de date - Verificarea integrității - Scanare completă.

Verificarea integrității bazei de date cu ajutorul «PRAGMA integrity_check».
Rezultat: succes. Pentru a vedea eroarea, urmați operatorul «PRAGMA integrity_check» în fila „Executare interogare.“

4. Executa comanda specificată, pentru a primi o mulțime de fagi teribile:

„*** in principal de baze de date ***
Pe pagina copac 5482 celulă 13: RowId 262638 de ordine (max mai mare decât părinte max 255232)
Pe pagina copac 22553 celulă 8: RowId 255233 de ordine (min mai puțin de min părinte de 262638)
Pe pagina copac 5601 celulă 10: RowId 270500 de ordine (max mai mare decât părinte max 255358)
Pe pagina copac 9610 celulă 10: RowId 255359 de ordine (min mai puțin de mamă min de 270500)
Pe pagina copac 25320 celule 145: referință la 2 la pagina 5482
Pe pagina copac 25320 145 celule: copii diferă de adâncime pentru
Pe pagina copac 25320 146 celule: copii diferă de adâncime pentru
Pe pagina copac 25827 celule 290: referință la 2 la pagina 5601
Pe pagina copac 25827 290 celule: copii diferă de adâncime pentru
Pe pagina copac 25827 291 celule: copii diferă de adâncime pentru
Pe pagina copac 8955 celulă 0: referință la 2 la pagina 28154
Pe pagina copac 27843 celule 0: referință la 2 la pagina 28136
Pagina 5335 nu este niciodată folosit
Pagina 5344 nu este niciodată folosit
Pagina 5369 nu este niciodată folosit
... există o mulțime de astfel nu este niciodată folosit
Pagina 28212 nu este niciodată folosit "
«Greșită # de intrări în indexul IX_Messages_remote_id»
«Greșită # de intrări în indexul IX_Messages_timestamp_convo_id_type»
«Greșită # de intrări în indexul IX_Messages_timestamp_chatname»
«Greșită # de intrări în indexul IX_Messages_call_guid»
«Greșită # de intrări în indexul IX_Messages_convo_id_timestamp_consumption_status_sending_status»
«RowId 95101 lipsește din indexul IX_Contacts_buddystatus»
«RowId 103110 lipsesc din indexul IX_Contacts_buddystatus»
«RowId 209626 lipsesc din indexul IX_Contacts_buddystatus»

Din moment ce eu nu o SQLite expert și nu sunt dornici să învețe fiecare greșeală, doar acționează.

Google ca o bază de date SQLite groapa, se pare ca acest lucru:

1. Descărcați SQLite3 linie de comandă pentru Windows sau «apt-get install SQLite3» pentru * nix. Am experimentat mai întâi sub Windows, dar mai târziu a trebuit să meargă la consola Linux, ca vindovyh nu SQLite3 destul de bine-au comportat arătat.

2. În Windows, copiați sqlite3.exe într-un dosar cu o copie a bazei de date (arhiva cu Windows anterioară, care nu este stricat Skype). Apoi rulați cmd (Start> Run).
Pentru Linux - trebuie doar să execute:

cd calea-to-folder-to-base-si-sqlite3.exe
SQLite3 main.db .dump >> myDumpSQLite.sql

(Acest «main.db [martor] .dump, nu se amestecă)

Oricine SQL familiar, știi de ce ai nevoie pentru a șterge ultima linie din fișier, și în loc să-l scrie:
COMMIT;

(Puteți și nu refuză tranzacția, dar atunci va fi foarte mult timp pentru a importa date într-o nouă bază de date.)

4. Creați o bază nouă, curată din fișierul myDumpSQLite.sql (recomandat pentru Linux).

SQLite3 principal-recovered.db

Este posibil să apară mesaje de eroare

Am fost în jurul acestei sunt:

Eroare: aproape de linia de 329 619: PRIMARY KEY trebuie să fie unic Eroare: aproape de linia de 329 620: PRIMARY KEY trebuie să fie unic Eroare: aproape de linia de 329 621: PRIMARY KEY trebuie să fie unic Eroare: aproape de linia 329622: PRIMARY KEY trebuie să fie unic. câteva zeci de astfel de mesaje

Datorită faptului că am făcut COMMIT la sfârșitul fișierului - eroarea va fi ignorată. Teoretic, ceva se pierde (unele mesaje simple, poate chiar unele dispar de chat). Dar acest lucru nu este nimic în comparație cu pierderea întregii baze de date, care oferă Microsoft.

Fișierul rezultat principal ar trebui să-recovered.db cântărește aproximativ la fel de mult ca și sql-fișier (am primit 123 MB). Dacă săriți peste pasul 3 sau ceva nu merge bine - obține un fișier gol inutil.

Am doar pe Linux, așa că, dacă Windows nu funcționează, dar linux nu semnezi - uita-te pentru prietenii din dreapta). SQLite3 Vindovyh emise:

Eroare: SQL incompletă: INSERT INTO "Contacte" valori (951 .......

5. Copiați fișierul în folderul% AppData% \ Roaming \ Skype \ moy_profil \ sub numele main.db, înlocuirea defect (Skype trebuie să fie oprit).

6. Lansarea Skype. Introduceți numele de utilizator și parola (am o armă a plecat).

7. PROFIT. Toate posturile sunt înapoi!

Poate că există un mod mai competent pentru a restabili baza de date. Am găsit chiar și unele de utilitate lacomi. dar nu ma ajutat (poate că a fost necesar pentru a da banii?). Mai încercat SkypeHistoryReader, Kudos Chat Căutare, maestro SQLite și orice mod diferit.