Restaurați fișierul mdf. Cum să reparați o bază de date MS SQL Server coruptă

Uneori trebuie să te confrunți cu o situație în care roadele multor ani de muncă care se află în baza de date SQL sunt în pericol. Acest articol este despre cum să preveniți pierderea de date și, dacă se întâmplă, despre cum să recuperați datele din ceea ce a mai rămas dintr-o bază de date obișnuită.

Asadar, haideti sa începem. Situația este următoarea: există un server care rulează 1C+SQL pe el. În timp ce bazele de date SQL rulau, alimentarea a fost întreruptă. Rezultatul este deplorabil: baza este în stare suspectă, iar când 1c încearcă să se cupleze de ea, se generează o eroare care spune că este imposibil să te conectezi pentru că nu este posibil să te conectezi la ea. baza de date este marcată suspectă pentru recuperare. Acest mod practic înseamnă că MS SQL Server vor încerca să restaureze baza de date cu mijloace proprii. Nu m-am atins de nimic și am lăsat totul pentru noapte, în speranța că până dimineața baza va fi restabilită, dar dimineața a fost la fel și, prin urmare, nu era nicio modalitate de a mă apropia de bază. Există o copie de rezervă conform legii ticăloșiei, dar are trei zile, plus că sunt o mulțime de documente care sunt păstrate doar în baza de date, dar nu există conform documentelor pe hârtie, adică. nu există nicio modalitate de a restaura manual documentele. După ce am cheltuit multă forță și nervi (care, după cum știți, nu sunt restaurați :)), am ajuns la următoarea secvență de acțiuni necesare pentru a restabili baza.

1) Principiul de bază la început este să nu faci rău. Suprimăm serverul SQL și copiem fișierele *.mdf și *.ldf de la bază în lateral.
2) În principiu, se întâmplă ca starea suspectă să apară din cauza faptului că s-au schimbat căile către fișierele cu baza (de exemplu, adăugat disc nouîn sistem, care a fost apoi eliminat, folderul cu baza de date a fost redenumit etc.). Apoi, desigur, căile au fost restaurate, dar baza de date rămâne încă marcată ca suspectă. Iată ce facem:
3) Porniți SQL Server.
4) Încercăm să conectăm baza de date prin Enterprise Manager:
Click dreapta pentru Baze de date, în meniul care apare, selectați Toate sarcinile->Atașați baza de date, apoi în caseta de dialog care apare, selectați fișierul cu baza de date (*.mdf) și setați parametrii necesari.
5) sau prin intermediul Analizorului de interogări cu ceva de genul acestei comenzi:
A. sp_attach_db @dbname = "DemoXMB",
b. @filename1 = „E:\Data\DemoXMB_Data.MDF”,
c. @filename2 = „E:\Data\DemoXMB_Log.LDF”
6) Căile către bază, desigur, trebuie înlocuite cu ale tale. Dacă baza este conectată, atunci, putem spune, am coborât cu o ușoară frică, dar dacă nu, atunci vom continua.
7) Dacă fișierul jurnal nu este deteriorat (*.ldf), dar *.mdf este deteriorat (de exemplu, la conectarea bazei de date, sql înjură erori în fișierul mdf), iar modul de rezervă este setat la full, atunci restabilim baza de date fără a restabili jurnalul tranzacțiilor, aproape 100% că tot chinul se poate termina acolo.
8) Dacă, dimpotrivă, fișierul ldf este deteriorat, dar fișierul *.mdf rămâne, la conectare, baza de date înjură absența/deteriorarea jurnalului de tranzacții. În acest caz, puteți utiliza HP „sp_attach_single_file_db”

De exemplu:
folosește master
EXEC sp_attach_single_file_db@dbname="DemoXMB",
@physname="c:\mssql7\data\DemoXMB_Dat.mdf"

La executarea acestor comenzi, fișierul DemoXMB_Log.ldf va fi creat în același director ca și baza, cu o dimensiune de 1MB și cu extensie automată.
Dacă există fișiere *.MDF și *.LDF sau datele sunt stocate în mai multe fișiere fizice (numărul total de fișiere fizice atașate nu trebuie să depășească 16), atunci ar trebui să se folosească „sp_attach_db” HP

De exemplu:
folosește master
EXEC sp_attach_db@dbname="DemoXMB",
@filename1 = "c:\mssql7\data\DemoXMB_Dat.mdf",
@filename1 = "c:\mssql7\data\DemoXMB_Log.ldf"

Pentru a conecta mai mult de 16 fișiere fizice la baza de date, utilizați comanda:
CREAȚI BAZĂ DE DATE PENTRU ATACH

Cu toate acestea, dacă nimic nu a ajutat, ambele fișiere au fost deteriorate și baza de date este încă în starea suspectă, atunci puteți încerca să resetați starea bazei de date cu următoarea secvență: (înainte de a utiliza acest HP, trebuie să permiteți modificarea directă a tabelelor de sistem )
folosește master
merge
Permitem modificarea directă a tabelelor de sistem:
sp_configure „permite actualizări”,1
merge
reconfigurare cu override
merge
Pentru a reseta indicatorul suspect, executați sp_resetstatus în DB principal:
sp_resetstatus „DataBaseName”
merge
Și acum vom interzice modificarea directă a tabelelor de sistem:
sp_configure „permite actualizări”,0
merge
reconfigurare cu override
merge

Practic, când am urmat toți acești pași, starea suspectului a fost resetat, DAR! când încerca să efectueze orice acțiune, SQL a început să jure că baza de date era încă în starea suspectă. Și apoi am făcut asta:

Executați scriptul de la QA:
folosește master
merge
sp_configure „permite actualizări”, 1
reconfigurare cu override
merge

Acolo facem:
update sysdatabases set status= 32768 unde name = " "

Reporniți SQL Server. În principiu, baza ar trebui să fie vizibilă (în modul de urgență).

Din QA executăm:
UTILIZARE" "
MERGE
sp_dboption" ", "single_user", "true"
merge
DBCC CHECKDB(" ", REPAIR_ALLOW_DATA_LOSS)
merge

Daca totul este ok, atunci:
sp_dboption" ", "utilizator_unic", "fals"
merge
folosește master
merge
sp_configure „permite actualizări”, 0
merge

După aceea, a devenit posibil să vizualizați tabelele bazei de date din SQL, dar a fost imposibil să lucrați cu el. Acum trebuie să utilizați Serviciile de transformare a datelor pentru a exporta datele într-o nouă bază de date. După aceea, efectuăm restaurarea/testarea bazei de date folosind 1C. Atenţie! Mulți nu acordă atenție acestui punct foarte important. Drept urmare, este posibil să descoperiți la un moment dat că baza de date a fost restaurată, pentru a spune ușor, nu chiar corect. Acestea. în document, în loc de nomenclatură, va fi ceva de genul 10122 /<Объект не найден>, aceasta este problema care mi-a apărut, pot exista o mulțime de opțiuni. Prin urmare, este mai bine să pierdeți timp, dar verificați baza de date folosind 1C.

Dacă nimic nu ajută deloc și datele despre pasiune trebuie restaurate, există încă utilitate terță parte numit MSSQLRecovery. Utilitarul este plătit, dar este posibil să folosiți versiunea demo, care poate fi descărcată de aici: http://www.officerecovery.com/mssql/download_demo.htm . Programul este foarte simplu, iar recuperarea bazei de date se reduce la trei pași: 1) selectați fișierul cu baza de date; 2) alegeți calea în care să salvați; 3) Apăsați butonul de recuperare; Așteptăm. Programul analizează baza de date SQL bucată cu bucată și o pune într-un director separat. Acolo adaugă și un fișier .bat pentru a restaura baza de date din „bucățile” primite. Nu l-am folosit niciodată, pentru că. a reușit să restaureze baza de date prin pașii anteriori.

Dar! Aici ar trebui făcută o pauză. Articolul nu ar fi complet dacă nu aș descrie metode de prevenire a unor astfel de probleme. Deci, cel mai simplu și mai fiabil mod: arhivarea, arhivarea și arhivarea din nou. În Enterprise Manager, accesați meniul Tools->Wizards->Management->Backup Wizard și configurați toți parametrii necesari. Ca urmare, am resetare completă Baza de date SQL pe disc are loc noaptea și apoi la fiecare 15 minute o copie de rezervă a modificărilor aduse bazei de date. În principiu, dacă aș avea o astfel de rezervă, aș da înapoi în câteva minute și aș continua să beau Coca-Cola :).

Dacă aveți întrebări/comentarii suplimentare scrieți aici:

Restaurați MDF

Dacă bază Date Microsoft SQL Server este inoperabil și în SQL Management Studio baza de date are starea „suspend” (marcată cu gri), atunci integritatea datelor din ea este grav încălcată. Cum se recuperează o bază de date coruptă din starea de suspendare? Cum se recuperează informațiile stocate în fișierul bazei de date .mdf?

Descrierea pas cu pas a reparării unui fișier .mdf deteriorat:

  • Detașați (dezconectați) baza de date de la MS SQL Server în SQL Management Studio
  • Creați o nouă bază de date goală pentru importarea ulterioară a datelor recuperate în ea.
  • Alerga Caseta de instrumente pentru reparații SQL Serverși selectați fișierul .mdf, dezactivat bazat pe prima pagină a programului

Urmați toți pașii din program și:

  • sau salvați datele ca scripturi SQL. După salvarea datelor ca scripturi SQL pe disc, trebuie să rulați fișierul .bat cu parametrii potriviți pentru a importa date într-o nouă bază de date
  • sau exportați datele direct într-o nouă bază de date.
Caseta de instrumente pentru reparații SQL Server nu este program gratuit deschis cod sursa. Utilizatorii pot încerca acest program înainte de a cumpăra folosind versiunea demo. Programul nu este licențiat conform GNU General Public License (GPL) sau GNU Lesser General Public License (LGPL).

Cerințe de sistem: Windows 98 sau o versiune ulterioară

S-a întâmplat un lucru groaznic (un șurub a căzut, a existat o supratensiune etc.) - baza este în stare suspectă și nu vrea să o părăsească, indiferent ce facem ...

Backup-uri Desigur, nu am făcut baze - poate că va exploda. Nu a făcut-o.

Deci, pentru a recupera datele, avem nevoie de:

1. Server MSSQL, MS SQL Enterprise Manager (EM), MS SQL Query Analyzer (QA) de la Microsoft (inclus cu MS SQL).

2. 1C: Versiunea SQL Enterprise 7.7.

3. MSSQLRecovery de la http://www.officerecovery.com

4. O copie a fișierului 1cv7.md din baza de date 1C distrusă, o copie a fișierului mdf distrus, aproximativ aceeași spatiu liber pe disc, ceea ce ocupă fișierul.

5. Timp liber pe baza calculului a 3 ore pentru 1 GB de greutate a fișierului mdf.

6. Tastatură, mouse, monitor.

Voi descrie pe scurt ce face MSSQLRecovery:

1. Analizează fișierul mdf la nivel de structură (MFT), formează scripturi sql text care conțin schema bazei de date și datele în sine din baza noastră de date distrusă.

2. Creează fișier batch commit.bat, care lansează versiunea de consolă a MS Query Analyzer, care execută secvenţial fișiere sql și completează de fapt baza noastră de date SQL nou creată.

Comentarii despre MSSQLRecovery.

Programul este bun pentru toată lumea, poate ajuta într-o situație fără speranță. Dar există două momente enervante care interferează cu restaurarea bazei de date 1C.

Mai întâi, programul creează un script schema.sql care conține o descriere a structurii tabelelor, procedurilor, funcțiilor, indecșilor etc. Acest script este executat mai întâi, creează tabele, proceduri, funcții, indecși etc. în baza noastră de date goală, astfel încât departe. O face foarte bine. Pentru un „dar” - ordinea câmpurilor din fișier este confuză la crearea structurii tabelului. Poate că pentru alte programe un astfel de „mixup” nu este înfricoșător, dar 1C nu digeră acest lucru.

În al doilea rând, fișierul batch creat commit.bat folosește versiunea de consolă a Query Analyzer (isql.exe), dar din anumite motive nu dorește să funcționeze corect cu pagina de coduri cp1251 - convertește caracterele rusești la codificarea OEM. Nici la noi nu merge.

De fapt, procedurile care trebuie efectuate pentru a fi fericit:

1. Setați MSSQLRecovery pe un fișier mdf parțial distrus, acordați-i timp să proceseze și apoi specificați unde vrem să salvăm scripturile rezultate cu structura bazei de date și datele ei restaurate.

2. Creați o nouă bază de date goală pe serverul SQL.

3. Creați structurile bazei noastre folosind o copie a 1cv7.md din baza prăbușită folosind 1C: Configurator.

4. Editați fișierul comite.bat, eliminând linia cu apelul pentru a executa scriptul schema.sql- am creat deja structura bazei de date folosind 1C.

5. Schimbare în același comite.bat apel isql apel in curs isqlw– Versiunea GUI a Query Analyzer. Acest lucru este necesar pentru percepția corectă a codificării rusești. Acestea. linia:
isql -S %1 -d %2 -U %3 -P %4 -E -I data0001.sql
va arata ca:
isqlw -S %1 -d %2 -U %3 -P %4 -E -i data0001.sql -o out.txt
Parametrul „-o” și fișierul „out.txt” sunt necesare pentru lansarea corectă a versiunii GUI a QA, jurnalul tranzacțiilor efectuate va fi scris în fișierul „out.txt”. Trebuie să înlocuiți întregul fișier commit.bat, de exemplu în manager de fișiere departe manager.

6. Rulați fișierul comite.bat pentru executare cu patru parametri: - Nume server SQL - Nume noua baza SQL-ul creat mai devreme - Numele de utilizator care are rolul dbowner pentru această bază de date (de obicei sa) - Parola pentru acest utilizator Va arăta cam așa: commit.bat my_sql_server recovery_1c_db la gfhjkm

De fapt, totul. În loc de fișier batch puteți scrie o procesare simplă în 1C, care, conform listei directorului, va executa secvenţial scripturi.

După antrenament comite.bat poți rula 1C și vezi cât de mari sunt pierderile. De obicei, datele care se pierd sunt cele care au fost accesate sau utilizate cel mai frecvent în momentul defecțiunii.

Și astfel încât să nu existe pierderi - faceți o copie de rezervă. Și mai des.

Bazele de date sunt coloana vertebrală a multor companii sisteme de informare. Ele pot stoca aproape orice informație, de la documentație operațională la documentație contabilă. Chiar și indisponibilitatea temporară a acestor informații poate duce la pierderi semnificative. Ce putem spune despre pierderea lor totală! Între timp, această situație este destul de reală. Din punct de vedere fizic, bazele de date sunt cele mai obișnuite fișiere care pot fi ușor deteriorate ca urmare a unui atac de viruși, blocări software sau Sistemul de fișiere, eșec hard disk, acțiuni neglijente ale utilizatorilor etc. În oricare dintre aceste cazuri, baza de date nu se mai deschide și, în consecință, toate informațiile plasate în ea devin inaccesibile.

Programul vă poate ajuta să faceți față acestei probleme și să returnați datele aparent complet pierdute. Caseta de instrumente de recuperare SQL Server(). Este conceput pentru a extrage și salva informații din bazele de date MS SQL Server corupte (acceptat fișiere Microsoft SQL Server 7.0, 2000, 2005, 2005 pe 64 de biți, 2008 și 2008 R2). Desigur, SQL Server Recovery Toolbox nu poate garanta recuperarea completă a tuturor datelor. Trebuie înțeles că în unele cazuri daunele pot fi atât de puternice încât este pur și simplu imposibil să extragi o parte din informații. Procesul de restaurare și salvare a informațiilor dintr-o bază de date MS SQL Server deteriorată folosind programul Caseta de instrumente de recuperare SQL Server efectuate folosind un expert pas cu pas. În fiecare etapă, utilizatorul trebuie să efectueze o singură acțiune, ceea ce este foarte convenabil și practic.

Primul pas este să selectați baza de date MS SQL Server coruptă. Cel mai simplu mod de a face acest lucru este cu Windows Explorer, care se lansează atunci când se face clic pe butonul. Extensiile *.mdf și *.ndf (extensiile standard ale bazelor de date MS SQL Server) sunt specificate automat ca filtru de selecție. Toate fișierele odată analizate sunt introduse într-o listă specială acces rapid. În viitor, pentru a le selecta, utilizatorul trebuie doar să facă clic pe pictogramă, să mute cursorul la documentul dorit din lista care se deschide și să facă clic pe butonul din stanga soareci.

Trecerea la următoarea etapă se realizează folosind butonul Următorul. În acest caz, programul va afișa o casetă de dialog care va întreba dacă să analizeze sau nu fișier sursă. Dacă răspunsul este da, extrage datele de serviciu din baza de date deteriorată și afișează informațiile pe care le poate recupera. Pentru confortul utilizatorului, fereastra este împărțită în două părți. Cel din stânga afișează toate categoriile posibile de informații: tabelele de utilizator și de sistem (Tabelele de utilizatori și Tabelele de sistem), vizualizările (Vizualizările), procedurile stocate (Procedurile stocate), funcțiile (Funcțiile) și definit de utilizator tipuri (Tipuri de date definite de utilizator). Când plasați cursorul pe oricare dintre ele, în partea dreaptă va fi afișată o listă de obiecte disponibile și conținutul acestora. Utilizatorul trebuie să îl revizuiască cu atenție și să se asigure că programul Caseta de instrumente de recuperare SQL Server va face față sarcinii și va putea cu adevărat să recupereze datele pierdute.

Următorul pas este să alegeți cum să salvați informațiile. Cert este că în utilitarul în cauză, datele extrase dintr-un fișier deteriorat pot fi salvate în HDD ca un set de scripturi Limbajul SQL sau exportate direct în baza de date MS SQL Server. Prima opțiune este bună deoarece vă permite să transferați informațiile extrase pe orice server. Pentru a face acest lucru, trebuie doar să copiați pachetul de scripturi obținute ca rezultat al lucrării la calculatorul doritși rulează-l acolo. Și a doua opțiune este mai convenabilă în cazurile în care computerul pe care se efectuează recuperarea are o conexiune la baza de date dorită. În acest caz, informațiile sunt exportate către acesta fără pași suplimentari.

Apoi, utilizatorul trebuie să selecteze informațiile care trebuie restaurate din fișierul deteriorat și salvate. Pentru acest program Roolbox de recuperare SQL afișează din nou pe ecran ceea ce poate extrage. Iar utilizatorul trebuie să marcheze datele de care are nevoie bifând/debifând casetele de selectare. Puteți selecta sau deselecta dintr-o dată din întreaga bază de date, categorii întregi de informații sau obiecte individuale(tabele, vizualizări, proceduri stocate etc.).

După finalizarea selecției, puteți începe procesul de scanare a fișierului sursă și de salvare a informațiilor extrase din acesta. Pentru a face acest lucru, faceți clic pe butonul Start Recovery. Durata acestei lucrări depinde de doi factori. În primul rând, din fișierul sursă, structura și dimensiunea acestuia. Și în al doilea rând, asupra performanței computerului pe care rulează. Este de remarcat faptul că, în unele cazuri, bazele de date sunt uriașe și, prin urmare, recuperarea informațiilor din acestea poate dura câteva zile. Imediat după încheierea procesului program SQL Server Recovery Toolbox va afișa un jurnal. Oferă date despre toate procesele de recuperare a informațiilor implementate în timpul sesiunii curente de lucru.

Astfel, SQL Server Recovery Toolbox este un instrument de succes pentru recuperarea datelor din bazele de date MS SQL Server deteriorate. Se distinge prin două caracteristici. Prima este eficiența. Utilitarul în cauză este capabil să recupereze cât mai multe informații posibil dintr-un fișier deteriorat. A doua caracteristică a SQL Server Recovery Toolbox este ușurința extremă de utilizare. Cu ajutorul acestui program, orice utilizator poate extrage informații dintr-o bază de date deteriorată și le poate salva fără pregătire prealabilă, chiar și abia începând să învețe despre un computer.



Se încarcă...
Top