Obnova mdf-a. Kako oporaviti mdf datoteku baze podataka Microsoft SQL Servera iz suspendiranog stanja

Ponekad se morate suočiti sa situacijom u kojoj su ugroženi plodovi dugogodišnjeg rada koji se nalaze u SQL bazi podataka. Ovaj članak govori o tome kako spriječiti gubitak podataka, a ako se to dogodi, kako oporaviti podatke iz onoga što je ostalo od nekoć normalne baze podataka.

Pa počnimo. Situacija je sljedeća: postoji poslužitelj na kojem radi 1C+SQL. Dok je SQL baza podataka radila, nestalo je struje. Rezultat je žalostan: baza podataka je u sumnjivom stanju, a kada se 1c pokuša povezati s njom, javlja se pogreška koja kaže da je nemoguće povezati se jer Baza podataka je označena kao sumnjiva za oporavak. Ovaj način rada u osnovi znači da će MSSQL Server pokušati vratiti bazu podataka vlastitim sredstvima. Nisam ništa dirao i sve sam ostavio preko noći, u nadi da će do jutra baza biti obnovljena, ali ujutro je bilo isto, i, prema tome, nije bilo načina da dođem do baze. Po zakonu podlosti postoji backup, ali je star tri dana, plus ima hrpa dokumenata koji se obrađuju samo kroz bazu, ali ne i kroz papirnate dokumente, tj. Ne postoji način za ručno vraćanje dokumenata. Nakon što sam potrošio puno energije i živaca (koji se, kao što znate, ne obnavljaju :)), došao sam do sljedećeg niza radnji potrebnih za vraćanje baze.

1) Prvo osnovno načelo je ne činiti štetu. Isključujemo SQL poslužitelj i kopiramo *.mdf i *.ldf datoteke iz baze podataka.
2) U principu se događa da do sumnjivog stanja dođe zbog toga što su se promijenile staze do datoteka s bazom podataka (npr. u sustav je dodan novi disk koji je zatim uklonjen, mapa s bazom je preimenovan itd.). Zatim su, naravno, staze vraćene, ali baza podataka i dalje ostaje označena kao sumnjiva. Evo što radimo:
3) Pokrenite SQL Server.
4) Pokušavamo povezati bazu podataka preko Enterprise Managera:
Desnom tipkom miša kliknite na Baze podataka, u izborniku koji se pojavi odaberite Svi zadaci->Priloži bazu podataka, zatim u dijaloškom okviru koji se pojavi odaberite datoteku s bazom (*.mdf) i postavite potrebne parametre.
5) ili kroz Query Analyzer s nečim poput ovoga:
a. sp_attach_db @dbname = "DemoXMB",
b. @filename1 = "E:\Data\DemoXMB_Data.MDF",
c. @filename2 = "E:\Data\DemoXMB_Log.LDF"
6) Putove do baze podataka, naravno, potrebno je zamijeniti vlastitim. Ako je baza spojena, onda smo se, moglo bi se reći, malo prestrašili, ali ako nije, onda ćemo nastaviti.
7) Ako datoteka dnevnika nije oštećena (*.ldf), ali *.mdf je oštećen (na primjer, prilikom povezivanja baze podataka, sql se žali na pogreške u mdf datoteci), a način sigurnosne kopije je postavljen na puni, tada vraćamo bazu podataka bez vraćanja log transakcija, skoro 100% da sva muka može završiti ovdje.
8) Ako je, naprotiv, ldf datoteka oštećena, ali datoteka *.mdf ostaje, prilikom povezivanja baza podataka se žali na nedostatak/oštećenje dnevnika transakcija. U ovom slučaju možete koristiti HP "sp_attach_single_file_db"

Na primjer:
koristiti master
EXEC sp_attach_single_file_db @dbname = "DemoXMB",
@physname = "c:\mssql7\data\DemoXMB_Dat.mdf"

Kada se izvrše ove naredbe, kreirat će se datoteka DemoXMB_Log.ldf u istom direktoriju kao i baza podataka, veličine 1 MB i automatski proširena.
Ako postoje *.MDF i *.LDF datoteke, ili su podaci pohranjeni u više od jedne fizičke datoteke (ukupan broj povezanih fizičkih datoteka ne smije biti veći od 16), tada trebate koristiti "sp_attach_db" HP

Na primjer:
koristiti master
EXEC sp_attach_db @dbname = "DemoXMB",
@filename1 = "c:\mssql7\data\DemoXMB_Dat.mdf",
@filename1 = "c:\mssql7\data\DemoXMB_Log.ldf"

Za povezivanje više od 16 fizičkih datoteka s bazom podataka upotrijebite naredbu:
STVARANJE BAZE PODATAKA ZA PRILOŽENJE

Međutim, ako ništa ne pomogne, obje su datoteke oštećene i baza podataka je još uvijek u sumnjivom stanju, tada možete pokušati resetirati stanje baze podataka koristeći sljedeći redoslijed: (prije korištenja ovog HP-a, morate dopustiti izravnu izmjenu sistemskih tablica)
koristiti master
ići
Dopusti izravnu izmjenu sistemskih tablica:
sp_configure "dopusti ažuriranja",1
ići
rekonfigurirati s nadjačavanjem
ići
Za poništavanje sumnjivog atributa pokrenite sp_resetstatus u HP glavnoj bazi podataka:
sp_resetstatus "Naziv baze podataka"
ići
Zabranimo sada izravne izmjene sistemskih tablica:
sp_configure "dopusti ažuriranja",0
ići
rekonfigurirati s nadjačavanjem
ići

Uglavnom, kada sam izvršio sve ove korake, status osumnjičenog je resetiran, ALI! kada je pokušao izvršiti bilo kakvu radnju, SQL se počeo zaklinjati da je baza podataka još uvijek u sumnjivom stanju. A onda sam napravio ovo:

Iz QA-a izvršavamo skriptu:
Koristite master
ići
sp_configure "dopusti ažuriranja", 1
rekonfigurirati s nadjačavanjem
ići

Tu također radimo:
ažuriraj sysdatabases postavi status= 32768 gdje je ime = " "

Ponovno pokrenite SQL Server. U principu, baza bi trebala biti vidljiva (u hitnom načinu rada).

Iz QA izvodimo:
KORISTITI" "
IĆI
sp_dboption" ", "single_user", "true"
ići
DBCC CHECKDB(" ", REPAIR_ALLOW_DATA_LOSS)
ići

Ako je sve u redu, onda:
sp_dboption" ", "single_user", "false"
ići
Koristite master
ići
sp_configure "dopusti ažuriranja", 0
ići

Nakon toga postalo je moguće vidjeti tablice baze podataka iz SQL-a, ali je bilo nemoguće raditi s njim. Sada trebate koristiti Data Transformation Services za izvoz podataka u novu bazu podataka. Nakon toga obnavljamo/testiramo bazu pomoću 1C alata. Pažnja! Mnogi ljudi ne obraćaju pozornost na ovu vrlo važnu točku. Kao rezultat toga, jednog dana možete otkriti da je baza podataka obnovljena, blago rečeno, ne sasvim ispravno. Oni. u dokumentu će umjesto nomenklature biti nešto poput 10122/<Объект не найден>, to je problem koji se pojavio kod mene, ali može biti puno opcija. Stoga je bolje gubiti vrijeme, ali provjeriti bazu podataka pomoću 1C.

Ako ništa ne pomaže, a podatke očajnički treba vratiti, postoji i uslužni program treće strane koji se zove MSSQLRecovery. Uslužni program se plaća, ali je moguće koristiti demo verziju, koja se može preuzeti ovdje: http://www.officerecovery.com/mssql/download_demo.htm. Program je vrlo jednostavan, a vraćanje baze podataka svodi se na tri koraka: 1) odabir datoteke s bazom; 2) odaberite put na koji želite spremiti; 3) Pritisnite gumb za oporavak; Čekamo. Program analizira SQL bazu podataka dio po dio i stavlja ga u zaseban direktorij. Tamo također dodaje .bat datoteku za vraćanje baze podataka iz primljenih “komada”. Nikad ga nisam koristio, jer... uspio vratiti bazu podataka pomoću prethodnih koraka.

Ali! Ovdje bismo trebali zastati. Članak ne bi bio potpun da nisam opisao metode za sprječavanje takvih problema. Dakle, najjednostavniji i najpouzdaniji način: arhiviranje, arhiviranje i opet arhiviranje. U Enterprise Manageru idite na izbornik Alati->Čarobnjaci->Upravljanje->Čarobnjak za sigurnosno kopiranje i konfigurirajte sve potrebne parametre. Kao rezultat toga, moja SQL baza podataka se noću potpuno vraća na disk, a zatim se svakih 15 minuta radi sigurnosna kopija promjena napravljenih u bazi podataka. U principu, da imam takav backup, vratio bih se za par minuta i nastavio piti Coca-Colu :).

Ukoliko imate dodatnih pitanja/komentara, pišite ovdje:

Vratite MDF

Ako baza podataka Microsoft SQL Servera ne radi i baza podataka ima status "suspend" (zasivljen) u SQL Management Studiju, tada je integritet podataka u njoj ozbiljno ugrožen. Kako oporaviti oštećenu bazu podataka iz suspendiranog stanja? Kako vratiti informacije pohranjene u .mdf datoteci baze podataka?

Korak po korak opis vraćanja oštećene .mdf datoteke:

  • Odspojite bazu podataka s MS SQL Servera u SQL Management Studio
  • Napravite novu praznu bazu podataka za kasniji uvoz oporavljenih podataka u nju.
  • Pokreni SQL Server Repair Toolbox i odaberite .mdf datoteku onemogućene baze podataka na prvoj stranici programa

Izvršite sve korake unutar programa i:

  • ili spremite podatke kao sql skripte. Nakon spremanja podataka kao sql skripti na disk, potrebno je pokrenuti .bat datoteku s potrebnim parametrima za uvoz podataka u novu bazu
  • ili izvoz podataka izravno u novu bazu podataka.
SQL Server Repair Toolbox nije besplatan i otvorenog koda. Korisnici mogu isprobati ovaj program prije kupnje pomoću demo verzije. Program nije licenciran pod GNU Općom javnom licencom (GPL) ili GNU Lesser General Public License (LGPL).

Sistemski zahtjevi: Windows 98 ili noviji

Baze podataka temelj su mnogih korporativnih informacijskih sustava. Mogu pohraniti gotovo sve informacije, od operativne do računovodstvene dokumentacije. Čak i privremena nedostupnost ovih informacija može dovesti do značajnih gubitaka. Što reći o njihovom potpunom gubitku! U međuvremenu, ova situacija je sasvim stvarna. Fizički, baze podataka su obične datoteke koje se lako mogu oštetiti kao rezultat napada virusa, kvarova softvera ili datotečnog sustava, kvara tvrdog diska, neopreznih radnji korisnika itd. U bilo kojem od ovih slučajeva baza podataka prestaje se otvarati i, sukladno tome, sve informacije objavljene u njoj postaju nedostupne.

Program vam može pomoći da se nosite s ovim problemom i vratite naizgled trajno izgubljene podatke. SQL Server Recovery Toolbox(). Dizajniran je za izdvajanje i spremanje informacija iz oštećenih baza podataka MS SQL Servera (podržane su datoteke Microsoft SQL Server 7.0, 2000, 2005, 2005 64-bit, 2008 i 2008 R2). Naravno, SQL Server Recovery Toolbox ne može jamčiti potpuni oporavak svih podataka. Potrebno je razumjeti da u nekim slučajevima šteta može biti toliko ozbiljna da je jednostavno nemoguće izvući neke informacije. Proces oporavka i spremanja podataka iz oštećene MS SQL Server baze podataka pomoću programa SQL Server Recovery Toolbox provodi pomoću čarobnjaka korak po korak. U svakoj fazi korisnik mora izvesti samo jednu radnju, što je vrlo zgodno i praktično.

Prvi korak je odabir oštećene baze podataka MS SQL Servera. Najprikladniji način za to je korištenje Windows Explorera, koji se pokreće kada kliknete gumb. Ekstenzije *.mdf i *.ndf (standardne ekstenzije baze podataka MS SQL Server) automatski se određuju kao filtar za odabir. Sve jednom analizirane datoteke dodaju se na poseban popis za brzi pristup. Ubuduće, da bi ih odabrao, korisnik samo treba kliknuti na ikonu, pomaknuti kursor na željeni dokument na popisu koji se otvori i kliknuti lijevu tipku miša.

Prijelaz na sljedeću fazu vrši se pomoću gumba Dalje. U tom slučaju, program će prikazati dijaloški okvir s pitanjem je li ili ne potrebno analizirati izvornu datoteku. Ako je odgovor potvrdan, dohvaća servisne podatke iz oštećene baze podataka i prikazuje informacije koje može oporaviti. Radi lakšeg korištenja, prozor je podijeljen u dva dijela. S lijeve strane prikazane su sve moguće kategorije informacija: korisničke i sistemske tablice (User Tables i System Tables), pogledi (Views), pohranjene procedure (Stored Procedures), funkcije (Functions) i korisnički definirani tipovi podataka. Kada postavite kursor na bilo koji od njih, s desne strane će se prikazati popis dostupnih objekata i njihov sadržaj. Korisnik ga mora pažljivo pregledati i osigurati da program SQL Server Recovery Toolboxće se nositi sa zadatkom i stvarno će moći vratiti izgubljene podatke.

Sljedeći korak je odabir metode spremanja podataka. Činjenica je da se u predmetnom uslužnom programu podaci izvađeni iz oštećene datoteke mogu spremiti na tvrdi disk u obliku skupa skripti u SQL-u ili izvesti izravno u bazu podataka MS SQL Servera. Prva opcija je dobra jer vam omogućuje prijenos izdvojenih informacija na bilo koji poslužitelj. Da biste to učinili, samo kopirajte rezultirajući paket skripti na željeno računalo i pokrenite ga tamo. A druga je opcija prikladnija u slučajevima kada računalo na kojem se provodi oporavak ima vezu s potrebnom bazom podataka. U tom se slučaju informacije izvoze u njega bez dodatnih radnji.

Zatim, korisnik treba odabrati podatke koje treba oporaviti iz oštećene datoteke i spremiti. U tu svrhu program Roolbox za oporavak SQL-a ponovno prikazuje na ekranu ono što može izvući. I korisnik mora odabrati podatke koji su mu potrebni označavanjem/isključivanjem potvrdnih okvira. Možete odabrati ili poništiti odabir cijele baze podataka, cijelih kategorija informacija ili pojedinačnih objekata (tablice, pogledi, pohranjene procedure itd.) odjednom.

Nakon dovršetka odabira, možete započeti proces skeniranja izvorne datoteke i spremanja informacija izdvojenih iz nje. Da biste to učinili, kliknite na gumb Start Recovery. Trajanje ovog posla ovisi o dva faktora. Prvo, na izvornu datoteku, njenu strukturu i veličinu. I drugo, na performanse računala na kojem se izvršava. Vrijedno je napomenuti da su u nekim slučajevima baze podataka ogromne, pa vraćanje informacija iz njih može potrajati nekoliko dana. Odmah nakon završetka procesa, SQL Server Recovery Toolbox će prikazati zapisnik. Pruža podatke o svim procesima obnavljanja informacija implementiranim tijekom trenutne radne sesije.

Stoga je program SQL Server Recovery Toolbox uspješan alat za oporavak podataka iz oštećenih MS SQL Server baza podataka. Odlikuju ga dvije značajke. Prva od njih je učinkovitost. Dotični uslužni program sposoban je oporaviti što više informacija iz oštećene datoteke. Druga značajka SQL Server Recovery Toolboxa je njegova iznimna jednostavnost korištenja. Uz pomoć ovog programa, svaki korisnik, čak i tek počinje proučavati računalo, može izvući informacije iz oštećene baze podataka i spremiti ih bez prethodne obuke.