Obnovte súbor mdf. Ako opraviť poškodenú databázu MS SQL Server

Niekedy musíte čeliť situácii, kedy sú ohrozené plody dlhoročnej práce, ktoré sú v SQL databáze. Tento článok je o tom, ako zabrániť strate údajov, a ak k nej dôjde, ako obnoviť údaje z toho, čo zostalo z kedysi normálnej databázy.

Tak poďme na to. Situácia je nasledovná: je na ňom server, na ktorom beží 1C+SQL. Kým boli spustené databázy SQL, napájanie bolo prerušené. Výsledok je poľutovaniahodný: základňa je v podozrivom stave a keď sa k nej 1c pokúsi pripojiť, vygeneruje sa chyba, že nie je možné sa pripojiť, pretože sa k nej nedá pripojiť. databáza je označená ako podozrivá na obnovenie. Tento režim v podstate znamená, že čs SQL Server sa pokúsia obnoviť databázu vlastnými prostriedkami. Nič som sa nedotkol a nechal som všetko na noc v nádeji, že do rána bude základňa obnovená, ale ráno to bolo rovnaké, a preto nebolo možné sa k základni priblížiť. Existuje záloha podľa zákona podlosti, ale je tri dni stará, plus je tam veľa dokumentov, ktoré sú držané len v databáze, ale žiadne podľa papierových dokumentov, t.j. neexistuje spôsob, ako manuálne obnoviť dokumenty. Po vynaložení veľa sily a nervov (ktoré, ako viete, nie sú obnovené :)) som dospel k nasledujúcej postupnosti krokov potrebných na obnovenie základne.

1) Základným princípom na začiatku je neškodiť. Potlačíme SQL server a skopírujeme súbory *.mdf a *.ldf zo základne na stranu.
2) V zásade sa stáva, že podozrivý stav nastáva v dôsledku toho, že sa zmenili cesty k súborom so základňou (napr. nový disk v systéme, ktorý bol následne odstránený, priečinok s databázou bol premenovaný a pod.). Potom sa samozrejme cesty obnovili, ale databáza stále zostáva označená ako podozrivá. Tu je to, čo robíme:
3) Spustite SQL Server.
4) Pokúsime sa pripojiť databázu cez Enterprise Manager:
Kliknite pravým tlačidlom myši pre Databázy v zobrazenej ponuke vyberte Všetky úlohy->Pripojiť databázu, potom v zobrazenom dialógovom okne vyberte súbor s databázou (*.mdf) a nastavte potrebné parametre.
5) alebo cez Query Analyzer s niečím ako tento príkaz:
a. sp_attach_db @dbname = "DemoXMB",
b. @filename1 = "E:\Data\DemoXMB_Data.MDF",
c. @filename2 = "E:\Data\DemoXMB_Log.LDF"
6) Cestičky k základni je samozrejme potrebné vymeniť za vlastné. Ak je základňa pripojená, potom, dá sa povedať, sme s miernym zľaknutím vystúpili, ale ak nie, tak budeme pokračovať.
7) Ak protokolový súbor nie je poškodený (*.ldf), ale je poškodený *.mdf (napríklad pri pripájaní databázy sql nadáva na chyby v súbore mdf) a režim zálohovania je nastavený na plný, potom obnovíme databázu bez obnovenia protokolových transakcií, takmer na 100% tam môže skončiť všetko trápenie.
8) Ak je naopak ldf-súbor poškodený, ale súbor *.mdf zostane, pri pripájaní databáza nadáva na absenciu/poškodenie transakčného logu. V tomto prípade môžete použiť súbor HP "sp_attach_single_file_db"

Napríklad:
použiť majstra
EXEC sp_attach_single_file_db@dbname="DemoXMB",
@physname="c:\mssql7\data\DemoXMB_Dat.mdf"

Pri vykonávaní týchto príkazov sa v rovnakom adresári ako základ vytvorí súbor DemoXMB_Log.ldf s veľkosťou 1 MB a automatickým rozšírením.
Ak existujú súbory *.MDF a *.LDF alebo sú údaje uložené vo viac ako jednom fyzickom súbore (celkový počet pripojených fyzických súborov by nemal presiahnuť 16), potom by sa mal použiť „sp_attach_db“ HP

Napríklad:
použiť majstra
EXEC sp_attach_db@dbname="DemoXMB",
@filename1 = "c:\mssql7\data\DemoXMB_Dat.mdf",
@filename1 = "c:\mssql7\data\DemoXMB_Log.ldf"

Ak chcete k databáze pripojiť viac ako 16 fyzických súborov, použite príkaz:
VYTVORIŤ DATABÁZU PRE PRÍLOHU

Ak však nič nepomohlo, oba súbory boli poškodené a databáza je stále v podozrivom stave, môžete sa pokúsiť obnoviť stav databázy v nasledujúcom poradí: (pred použitím tohto HP musíte povoliť priamu úpravu systémových tabuliek )
použiť majstra
ísť
Umožňujeme priame úpravy systémových tabuliek:
sp_configure "povoliť aktualizácie",1
ísť
prekonfigurovať s prepísaním
ísť
Ak chcete resetovať príznak podozrivého, vykonajte sp_resetstatus v hlavnej databáze:
sp_resetstatus "Názov databázy"
ísť
A teraz zakážeme priame úpravy systémových tabuliek:
sp_configure "povoliť aktualizácie",0
ísť
prekonfigurovať s prepísaním
ísť

V podstate, keď som vykonal všetky tieto kroky, stav podozrivého sa resetoval, ALE! pri pokuse o vykonanie akýchkoľvek akcií SQL začal prisahať, že databáza je stále v podozrivom stave. A potom som urobil toto:

Spustite skript z QA:
použiť majstra
ísť
sp_configure "povoliť aktualizácie", 1
prekonfigurovať s prepísaním
ísť

Tam robíme:
update sysdatabases set status= 32768 kde name = " "

Reštartujte SQL Server. V zásade by základňa mala byť viditeľná (v núdzovom režime).

Z QA vykonávame:
USE" "
Ísť
sp_dboption" ", "single_user", "true"
ísť
DBCC CHECKDB(" ", REPAIR_ALLOW_DATA_LOSS)
ísť

Ak je všetko v poriadku, potom:
sp_dboption" ", "single_user", "false"
ísť
použiť majstra
ísť
sp_configure "povoliť aktualizácie", 0
ísť

Potom bolo možné prezerať databázové tabuľky z SQL, ale nedalo sa s tým pracovať. Teraz musíte použiť Data Transformation Services na export údajov do novej databázy. Potom vykonáme obnovu / testovanie databázy pomocou 1C. Pozor! Mnohí nevenujú pozornosť tomuto veľmi dôležitému bodu. V dôsledku toho môžete v jednom bode zistiť, že databáza bola obnovená, mierne povedané, nie celkom správne. Tie. v dokumente bude namiesto nomenklatúry niečo ako 10122 /<Объект не найден>, toto je problém, ktorý mi vznikol, možností môže byť veľa. Preto je lepšie stratiť čas, ale skontrolujte databázu pomocou 1C.

Ak nepomôže vôbec nič a údaje o vášni je potrebné obnoviť, stále existuje nástroj tretej strany s názvom MSSQLRecovery . Utilita je spoplatnená, ale je možné použiť demo verziu, ktorú si môžete stiahnuť tu: http://www.officerecovery.com/mssql/download_demo.htm . Program je veľmi jednoduchý a obnova databázy pozostáva z troch krokov: 1) vyberte súbor s databázou; 2) vyberte cestu, kam uložiť; 3) Stlačte tlačidlo obnovenia; Čakáme. Program analyzuje databázu SQL kúsok po kúsku a umiestni ju do samostatného adresára. Tam pridá aj .bat súbor na obnovu databázy z prijatých „kúskov“. Nikdy som to nepoužil, pretože. podarilo obnoviť databázu podľa predchádzajúcich krokov.

Ale! Tu treba urobiť prestávku. Článok by nebol úplný, keby som neopísal spôsoby, ako takýmto problémom predchádzať. Takže najjednoduchší a najspoľahlivejší spôsob: archivovať, archivovať a ešte raz archivovať. V Enterprise Manager prejdite do ponuky Tools->Wizards->Management->Backup Wizard a nakonfigurujte všetky potrebné parametre. V dôsledku toho mám úplný reset SQL databáza na disk prebieha v noci a potom každých 15 minút záloha zmien vykonaných v databáze. V zásade, keby som mal takú zálohu, za pár minút sa vrátim späť a pokračujem v pití Coca-Coly :).

Ak máte ďalšie otázky/pripomienky, napíšte sem:

Obnovte MDF

Ak základ údaje spoločnosti Microsoft SQL Server je nefunkčný a v SQL Management Studio má databáza stav „suspend“ (označené sivou farbou), potom je integrita údajov v nej vážne narušená. Ako obnoviť poškodenú databázu zo stavu pozastavenia? Ako obnoviť informácie uložené v súbore databázy .mdf?

Podrobný popis opravy poškodeného súboru .mdf:

  • Odpojte (de-attach) databázu od MS SQL Server v SQL Management Studio
  • Vytvorte novú prázdnu databázu na následný import obnovených údajov do nej.
  • Bežať SQL Server Repair Toolbox a vyberte súbor .mdf, zakázaný základ na prvej stránke programu

Postupujte podľa všetkých krokov v programe a:

  • alebo uložiť údaje ako skripty SQL. Po uložení údajov ako sql skriptov na disk musíte spustiť súbor .bat s správne parametre na import údajov do novej databázy
  • alebo exportovať údaje priamo do novej databázy.
SQL Server Repair Toolbox nie je voľný program OTVORENÉ zdrojový kód. Používatelia si môžu tento program pred kúpou vyskúšať pomocou demo verzie. Program nie je licencovaný pod GNU General Public License (GPL) alebo GNU Lesser General Public License (LGPL).

Požiadavky na systém: Windows 98 alebo vyšší

Stala sa hrozná vec (odpadla skrutka, došlo k prepätiu atď.) - základňa je v podozrivom stave a nechce ju opustiť, nech robíme čokoľvek ...

Zálohy Základy sme samozrejme nerobili - možno to prefúkne. To nie.

Na obnovenie údajov teda potrebujeme:

1. MSSQL server, MS SQL Enterprise Manager (EM), MS SQL Query Analyzer (QA) od Microsoftu (súčasť MS SQL).

2. Verzia 1C: Enterprise 7.7 SQL.

3. MSSQLRecovery z http://www.officerecovery.com

4. Kópia súboru 1cv7.md zo zničenej databázy 1C, kópia zničeného súboru mdf, približne to isté voľné miesto na disku, ktorý súbor zaberá.

5. Voľný čas na základe výpočtu 3 hodín na 1 GB hmotnosti mdf súboru.

6. Klávesnica, myš, monitor.

Stručne opíšem, čo robí MSSQLRecovery:

1. Parsuje súbor mdf na úrovni štruktúry (MFT), vytvára textové sql skripty obsahujúce schému databázy a samotné údaje z našej zničenej databázy.

2. Vytvára dávkový súbor commit.bat, ktorý spúšťa konzolovú verziu MS Query Analyzer, ktorá sekvenčne spúšťa sql súbory a vlastne vypĺňa našu novovytvorenú SQL databázu.

Komentáre k MSSQLRecovery.

Program je dobrý pre každého, môže pomôcť v bezvýchodiskovej situácii. Existujú však dva nepríjemné momenty, ktoré zasahujú do obnovy databázy 1C.

Najprv program vytvorí skript schema.sql s popisom štruktúry tabuliek, procedúr, funkcií, indexov atď. Tento skript sa spustí ako prvý, vytvorí tabuľky, procedúry, funkcie, indexy atď. v našej prázdnej databáze, takže ďaleko. Robí to veľmi dobre. Pre jedno "ale" - poradie polí v súbore je zmätené pri vytváraní štruktúry tabuľky. Možno pre iné programy takáto „zmiešanie“ nie je desivé, ale 1C to nestrávi.

Po druhé, vytvorený dávkový súbor commit.bat používa konzolovú verziu Query Analyzer (isql.exe), ale z nejakého dôvodu nechce správne pracovať s kódovou stránkou cp1251 – konvertuje ruské znaky do OEM kódovania. Nefunguje to ani u nás.

V skutočnosti postupy, ktoré je potrebné vykonať, aby ste boli šťastní:

1. Na čiastočne zničenom mdf súbore nastavíme MSSQLRecovery, dáme mu čas na spracovanie a následne určíme, kam chceme uložiť výsledné skripty so štruktúrou databázy a jej obnovenými dátami.

2. Vytvorte novú prázdnu databázu na serveri SQL.

3. Vytvorte štruktúry našej základne pomocou kópie 1cv7.md zo zrútenej základne pomocou 1C: Configurator.

4. Upravte súbor spáchať.bat, odstránením riadku s volaním na vykonanie skriptu schema.sql- už sme vytvorili štruktúru databázy pomocou 1C.

5. Zmeňte to isté spáchať.bat hovor isql na zavolanie isqlw– GUI verzia Query Analyzer. To je potrebné pre správne vnímanie ruského kódovania. Tie. riadok:
isql -S %1 -d %2 -U %3 -P %4 -E -I data0001.sql
bude vyzerať takto:
isqlw -S %1 -d %2 -U %3 -P %4 -E -i data0001.sql -o out.txt
Pre správne spustenie GUI verzie QA je potrebný parameter "-o" a súbor "out.txt", do súboru "out.txt" sa zapíše protokol vykonaných transakcií. Musíte nahradiť v celom súbore commit.bat, napríklad v Správca súborovďaleko manažér.

6. Spustite súbor spáchať.bat na vykonanie so štyrmi parametrami: - Názov servera SQL - Názov nová základňa SQL, ktorý sme vytvorili predtým - Používateľské meno, ktoré má rolu dbowner pre túto databázu (zvyčajne sa) - Heslo pre tohto používateľa Bude to vyzerať asi takto: commit.bat my_sql_server recovery_1c_db sa gfhjkm

Vlastne všetko. Namiesto dávkový súbor môžete napísať jednoduché spracovanie v 1C, ktoré podľa výpisu adresára bude postupne spúšťať skripty.

Po cvičení spáchať.bat môžete spustiť 1C a uvidíte, aké veľké sú straty. Údaje, ktoré sa stratia, sú zvyčajne tie, ku ktorým sa v čase zlyhania pristupovalo alebo sa k nim najčastejšie pristupovalo.

A aby nedošlo k žiadnym stratám - vytvorte zálohu. A častejšie.

Databázy sú chrbtovou kosťou mnohých spoločností informačné systémy. Môžu uchovávať takmer akékoľvek informácie, od prevádzkovej až po účtovnú dokumentáciu. Aj dočasná nedostupnosť týchto informácií môže viesť k značným stratám. Čo môžeme povedať o ich úplnej strate! Medzitým je táto situácia celkom reálna. Fyzicky sú databázy najbežnejšie súbory, ktoré sa môžu ľahko poškodiť v dôsledku napadnutia vírusom, zlyhania softvér alebo systém súborov, zlyhanie pevný disk, neopatrným konaním užívateľov a pod. V každom z týchto prípadov sa databáza prestane otvárať, a preto sa všetky informácie v nej umiestnené stanú nedostupnými.

Program môže pomôcť vyrovnať sa s týmto problémom a vrátiť zdanlivo úplne stratené údaje. SQL Server Recovery Toolbox(). Je určený na extrahovanie a ukladanie informácií z poškodených databáz MS SQL Server (podporované súbory Microsoft SQL Server 7.0, 2000, 2005, 2005 64-bit, 2008 a 2008 R2). Prirodzene, SQL Server Recovery Toolbox nemôže zaručiť úplnú obnovu všetkých údajov. Je potrebné pochopiť, že v niektorých prípadoch môže byť poškodenie také silné, že je jednoducho nemožné získať niektoré informácie. Proces obnovy a ukladania informácií z poškodenej databázy MS SQL Server pomocou programu SQL Server Recovery Toolbox vykonaná pomocou sprievodcu krok za krokom. V každej fáze musí používateľ vykonať iba jednu akciu, čo je veľmi pohodlné a praktické.

Prvým krokom je vybrať poškodenú databázu MS SQL Server. Najjednoduchší spôsob, ako to urobiť, je pomocou prieskumník okien, ktorý sa spustí po kliknutí na tlačidlo. Ako filter výberu sú automaticky špecifikované prípony *.mdf a *.ndf (štandardné rozšírenia databáz MS SQL Server). Všetky raz analyzované súbory sa zapíšu do špeciálneho zoznamu rýchly prístup. Ak ich chcete v budúcnosti vybrať, stačí kliknúť na ikonu, presunúť kurzor na požadovaný dokument v zozname, ktorý sa otvorí, a kliknúť na ľavé tlačidlo myši.

Prechod do ďalšej fázy sa vykoná pomocou tlačidla Ďalej. V tomto prípade program zobrazí dialógové okno s otázkou, či vykonať analýzu alebo nie zdrojový súbor. Ak je odpoveď áno, extrahuje servisné údaje z poškodenej databázy a zobrazí informácie, ktoré môže obnoviť. Pre pohodlie používateľa je okno rozdelené na dve časti. Ľavá zobrazuje všetky možné kategórie informácií: užívateľské a systémové tabuľky (User Tables a System Tables), pohľady (Views), uložené procedúry (Stored Procedures), funkcie (Functions) a definované užívateľom typy (User Defined Data Types). Po umiestnení kurzora na ktorýkoľvek z nich sa na pravej strane zobrazí zoznam dostupných objektov a ich obsah. Používateľ si ho musí dôkladne preštudovať a uistiť sa, že program SQL Server Recovery Toolbox sa s úlohou vyrovná a skutočne dokáže obnoviť stratené údaje.

Ďalším krokom je výber spôsobu uloženia informácií. Faktom je, že v príslušnom nástroji je možné uložiť údaje extrahované z poškodeného súboru HDD ako súbor skriptov jazyk SQL alebo exportovať priamo do databázy MS SQL Server. Prvá možnosť je dobrá, pretože vám umožňuje preniesť extrahované informácie na ľubovoľný server. Ak to chcete urobiť, stačí skopírovať balík skriptov získaných ako výsledok práce požadovaný počítač a spustite to tam. A druhá možnosť je vhodnejšia v prípadoch, keď počítač, na ktorom sa obnova vykonáva, má pripojenie k požadovanej databáze. V tomto prípade sa doň exportujú informácie bez akýchkoľvek ďalších krokov.

Ďalej musí používateľ vybrať informácie, ktoré je potrebné obnoviť z poškodeného súboru a uložiť. Pre tento program SQL Recovery Roolbox opäť zobrazí na obrazovke, čo dokáže extrahovať. A používateľ musí označiť údaje, ktoré potrebuje, zaškrtnutím / zrušením začiarknutia políčok. Môžete vybrať alebo zrušiť výber naraz z celej databázy, celých kategórií informácií resp jednotlivé predmety(tabuľky, pohľady, uložené procedúry atď.).

Po dokončení výberu môžete spustiť proces skenovania zdrojového súboru a uloženia informácií z neho extrahovaných. Ak to chcete urobiť, kliknite na tlačidlo Spustiť obnovenie. Trvanie tejto práce závisí od dvoch faktorov. Najprv zo zdrojového súboru, jeho štruktúry a veľkosti. A po druhé, na výkon počítača, na ktorom beží. Stojí za zmienku, že v niektorých prípadoch sú databázy obrovské, a preto obnova informácií z nich môže trvať niekoľko dní. Ihneď po ukončení procesu SQL program Server Recovery Toolbox zobrazí protokol. Poskytuje údaje o všetkých procesoch obnovy informácií realizovaných počas aktuálnej pracovnej relácie.

SQL Server Recovery Toolbox je teda úspešným nástrojom na obnovu dát z poškodených databáz MS SQL Server. Vyznačuje sa dvoma vlastnosťami. Prvým je efektivita. Príslušný nástroj je schopný obnoviť čo najviac informácií z poškodeného súboru. Druhou vlastnosťou SQL Server Recovery Toolbox je jeho extrémne jednoduché použitie. Pomocou tohto programu môže každý používateľ získať informácie z poškodenej databázy a uložiť ich bez predchádzajúceho školenia, dokonca aj keď sa práve začína učiť o počítači.



Načítava...
Hore