Memulihkan mdf. Bagaimana untuk memulihkan fail mdf pangkalan data Microsoft SQL Server daripada keadaan suspend

Kadang-kadang anda perlu menghadapi situasi di mana hasil kerja bertahun-tahun yang terletak dalam pangkalan data SQL berisiko. Artikel ini adalah tentang cara untuk mengelakkan kehilangan data, dan jika ini berlaku, bagaimana untuk memulihkan data daripada apa yang tinggal dalam pangkalan data yang pernah normal.

Jadi mari kita mulakan. Keadaannya adalah seperti berikut: terdapat pelayan dengan 1C+SQL berjalan di atasnya. Semasa pangkalan data SQL sedang berjalan, kuasa telah dipotong. Hasilnya adalah menyedihkan: pangkalan data berada dalam keadaan yang disyaki, dan apabila 1c cuba menyambung kepadanya, ralat dilemparkan mengatakan bahawa ia adalah mustahil untuk menyambung kerana Pangkalan data ditandakan sebagai suspek untuk pemulihan. Mod ini pada asasnya bermakna Pelayan MSSQL akan cuba memulihkan pangkalan data menggunakan caranya sendiri. Saya tidak menyentuh apa-apa dan meninggalkan semuanya semalaman, dengan harapan bahawa pada waktu pagi pangkalan itu akan dipulihkan, tetapi pada waktu pagi ia adalah sama, dan, oleh itu, tidak ada cara untuk sampai ke pangkalan. Mengikut hukum kekejaman, terdapat sandaran, tetapi ia berumur tiga hari, ditambah terdapat sekumpulan dokumen yang hanya diproses melalui pangkalan data, tetapi tidak melalui dokumen kertas, i.e. Tiada cara untuk memulihkan dokumen secara manual. Setelah menghabiskan banyak tenaga dan saraf (yang, seperti yang anda ketahui, tidak dipulihkan :)), saya datang ke urutan tindakan berikut yang diperlukan untuk memulihkan pangkalan.

1) Prinsip asas pada mulanya adalah tidak membahayakan. Kami mematikan pelayan SQL dan menyalin fail *.mdf dan *.ldf dari pangkalan data.
2) Pada dasarnya, keadaan yang disyaki berlaku disebabkan oleh fakta bahawa laluan ke fail dengan pangkalan data telah berubah (contohnya, cakera baru telah ditambahkan ke sistem, yang kemudiannya dialih keluar, folder dengan pangkalan data telah dinamakan semula, dsb.). Kemudian, sudah tentu, laluan telah dipulihkan, tetapi pangkalan data masih kekal ditandakan sebagai suspek. Inilah yang kami lakukan:
3) Lancarkan Pelayan SQL.
4) Kami cuba menyambungkan pangkalan data melalui Pengurus Perusahaan:
Klik kanan pada Pangkalan Data, dalam menu yang muncul, pilih Semua tugas->Lampirkan pangkalan data, kemudian dalam kotak dialog yang muncul, pilih fail dengan pangkalan data (*.mdf) dan tetapkan parameter yang diperlukan.
5) atau melalui Penganalisis Pertanyaan dengan sesuatu seperti ini:
a. sp_attach_db @dbname = "DemoXMB",
b. @filename1 = "E:\Data\DemoXMB_Data.MDF",
c. @filename2 = "E:\Data\DemoXMB_Log.LDF"
6) Laluan ke pangkalan data, sudah tentu, perlu diganti dengan anda sendiri. Jika pangkalan itu disambungkan, maka, seseorang mungkin berkata, kami turun dengan sedikit ketakutan, tetapi jika tidak, maka kami akan meneruskan.
7) Jika fail log tidak rosak (*.ldf), tetapi *.mdf rosak (contohnya, apabila menyambung pangkalan data, sql mengadu tentang ralat dalam fail mdf), dan mod sandaran ditetapkan kepada penuh, maka kami memulihkan pangkalan data tanpa memulihkan transaksi log, hampir 100% bahawa semua siksaan boleh berakhir di sini.
8) Jika, sebaliknya, fail ldf rosak, tetapi fail *.mdf kekal, apabila menyambung, pangkalan data mengadu tentang ketiadaan/kerosakan log transaksi. Dalam kes ini, anda boleh menggunakan HP "sp_attach_single_file_db"

Sebagai contoh:
guna master
EXEC sp_attach_single_file_db @dbname = "DemoXMB",
@physname = "c:\mssql7\data\DemoXMB_Dat.mdf"

Apabila arahan ini dilaksanakan, fail DemoXMB_Log.ldf akan dibuat dalam direktori yang sama dengan pangkalan data, bersaiz 1MB dan dilanjutkan secara automatik.
Jika terdapat fail *.MDF dan *.LDF, atau data disimpan dalam lebih daripada satu fail fizikal (jumlah bilangan fail fizikal yang disambungkan tidak boleh melebihi 16), maka anda harus menggunakan HP "sp_attach_db"

Sebagai contoh:
guna master
EXEC sp_attach_db @dbname = "DemoXMB",
@filename1 = "c:\mssql7\data\DemoXMB_Dat.mdf",
@filename1 = "c:\mssql7\data\DemoXMB_Log.ldf"

Untuk menyambungkan lebih daripada 16 fail fizikal ke pangkalan data, gunakan arahan:
BUAT PANGKALAN DATA UNTUK LAMPIRAN

Walau bagaimanapun, jika tiada apa-apa yang membantu, kedua-dua fail rosak dan pangkalan data masih dalam keadaan disyaki, maka anda boleh cuba menetapkan semula keadaan pangkalan data menggunakan urutan berikut: (sebelum menggunakan HP ini, anda mesti membenarkan pengubahsuaian terus jadual sistem)
guna master
pergi
Benarkan pengubahsuaian terus jadual sistem:
sp_configure "benarkan kemas kini",1
pergi
konfigurasi semula dengan menimpa
pergi
Untuk menetapkan semula atribut suspek, jalankan sp_resetstatus dalam pangkalan data induk HP:
sp_resetstatus "DataBaseName"
pergi
Sekarang mari kita larang pengubahsuaian langsung jadual sistem:
sp_configure "benarkan kemas kini",0
pergi
konfigurasi semula dengan menimpa
pergi

Pada asasnya, apabila saya menyelesaikan semua langkah ini, status suspek telah ditetapkan semula, TETAPI! apabila cuba melakukan sebarang tindakan, SQL mula bersumpah bahawa pangkalan data masih dalam keadaan disyaki. Dan kemudian saya melakukan ini:

Daripada QA kami melaksanakan skrip:
Gunakan master
pergi
sp_configure "benarkan kemas kini", 1
konfigurasi semula dengan menimpa
pergi

Di sana kami juga melakukan:
kemas kini sysdatabases set status= 32768 where name = " "

Mulakan semula SQL Server. Pada dasarnya, pangkalan harus kelihatan (dalam mod kecemasan).

Daripada QA kami melaksanakan:
GUNA" "
PERGI
sp_dboption" ", "single_user", "true"
pergi
DBCC CHECKDB(" ", REPAIR_ALLOW_DATA_LOSS)
pergi

Jika semuanya teratur, maka:
sp_dboption" ", "single_user", "false"
pergi
Gunakan master
pergi
sp_configure "benarkan kemas kini", 0
pergi

Selepas ini, ia menjadi mungkin untuk melihat jadual pangkalan data dari SQL, tetapi mustahil untuk bekerja dengannya. Kini anda perlu menggunakan Perkhidmatan Transformasi Data untuk mengeksport data ke pangkalan data baharu. Selepas ini, kami memulihkan/menguji pangkalan data menggunakan alat 1C. Perhatian! Ramai orang tidak memberi perhatian kepada perkara yang sangat penting ini. Akibatnya, anda mungkin suatu hari nanti mendapati bahawa pangkalan data telah dipulihkan, secara ringkas, tidak sepenuhnya betul. Itu. dalam dokumen dan bukannya tatanama akan ada sesuatu seperti 10122/<Объект не найден>, ini adalah masalah yang timbul untuk saya, tetapi terdapat banyak pilihan. Oleh itu, adalah lebih baik untuk membuang masa, tetapi semak pangkalan data menggunakan 1C.

Jika tiada apa-apa yang membantu sama sekali, dan data sangat perlu dipulihkan, terdapat juga utiliti pihak ketiga yang dipanggil MSSQLRecovery. Utiliti ini dibayar, tetapi adalah mungkin untuk menggunakan versi demo, yang boleh dimuat turun di sini: http://www.officerecovery.com/mssql/download_demo.htm. Program ini sangat mudah, dan memulihkan pangkalan data datang kepada tiga langkah: 1) pilih fail dengan pangkalan data; 2) pilih jalan untuk menyimpan; 3) Tekan butang pemulihan; Kami tunggu. Program ini menghuraikan pangkalan data SQL sekeping demi sekeping dan meletakkannya dalam direktori berasingan. Di sana dia juga menambah fail .bat untuk memulihkan pangkalan data daripada "kepingan" yang diterima. Saya tidak pernah menggunakannya, kerana... berjaya memulihkan pangkalan data menggunakan langkah sebelumnya.

Tetapi! Kita patut berhenti sebentar di sini. Artikel itu tidak akan lengkap jika saya tidak menerangkan kaedah untuk mencegah masalah tersebut. Jadi, cara yang paling mudah dan boleh dipercayai: mengarkib, mengarkib dan mengarkib lagi. Dalam Pengurus Perusahaan, pergi ke menu Tools->Wizards->Management->Backup Wizard dan konfigurasikan semua parameter yang diperlukan. Akibatnya, pangkalan data SQL saya ditetapkan semula sepenuhnya ke cakera pada waktu malam, dan kemudian setiap 15 minit terdapat sandaran perubahan yang dibuat pada pangkalan data. Pada dasarnya, jika saya mempunyai sandaran sedemikian, saya akan berguling semula dalam beberapa minit dan terus minum Coca-Cola :).

Jika anda mempunyai sebarang soalan/komen tambahan, tulis di sini:

Pulihkan MDF

Jika pangkalan data Microsoft SQL Server tidak berfungsi dan status pangkalan data "digantung" (ditandakan dengan warna kelabu) dalam SQL Management Studio, maka integriti data di dalamnya terjejas dengan serius. Bagaimana untuk memulihkan pangkalan data yang rosak dari keadaan yang digantung? Bagaimana untuk memulihkan maklumat yang disimpan dalam fail pangkalan data .mdf?

Penerangan langkah demi langkah memulihkan fail .mdf yang rosak:

  • Nyahlampirkan pangkalan data daripada MS SQL Server dalam SQL Management Studio
  • Cipta pangkalan data kosong baharu untuk import seterusnya bagi data pulih ke dalamnya.
  • Pelancaran Kotak Alat Pembaikan Pelayan SQL dan pilih fail .mdf pangkalan data yang dilumpuhkan pada halaman pertama program

Laksanakan semua langkah di dalam program dan:

  • atau simpan data sebagai skrip sql. Selepas menyimpan data sebagai skrip sql pada cakera, anda perlu menjalankan fail .bat dengan parameter yang diperlukan untuk mengimport data ke dalam pangkalan data baharu
  • atau mengeksport data terus ke pangkalan data baharu.
Kotak Alat Pembaikan Pelayan SQL bukan percuma dan sumber terbuka. Pengguna boleh mencuba program ini sebelum membeli menggunakan versi demo. Program ini tidak dilesenkan di bawah GNU General Public License (GPL) atau GNU Lesser General Public License (LGPL).

Keperluan sistem: Windows 98 atau lebih tinggi

Pangkalan data adalah asas kepada banyak sistem maklumat korporat. Mereka boleh menyimpan hampir semua maklumat, daripada operasi kepada dokumentasi perakaunan. Malah ketiadaan sementara maklumat ini boleh menyebabkan kerugian yang ketara. Apa yang boleh kita katakan tentang kehilangan mereka sepenuhnya! Sementara itu, keadaan ini agak nyata. Secara fizikal, pangkalan data ialah fail biasa yang mudah rosak akibat serangan virus, perisian atau kegagalan sistem fail, kegagalan cakera keras, tindakan pengguna yang cuai, dsb. Dalam mana-mana kes ini, pangkalan data berhenti dibuka dan, dengan itu, semua maklumat yang disiarkan di dalamnya menjadi tidak boleh diakses.

Program ini boleh membantu anda mengatasi masalah ini dan mengembalikan data yang hilang secara kekal. Kotak Alat Pemulihan Pelayan SQL(). Ia direka bentuk untuk mengekstrak dan menyimpan maklumat daripada pangkalan data MS SQL Server yang rosak (Microsoft SQL Server 7.0, 2000, 2005, 2005 64-bit, 2008 dan 2008 R2 fail disokong). Sememangnya, Kotak Alat Pemulihan Pelayan SQL tidak dapat menjamin pemulihan lengkap semua data. Adalah perlu untuk memahami bahawa dalam beberapa kes kerosakan mungkin sangat teruk sehingga mustahil untuk mengekstrak beberapa maklumat. Proses memulihkan dan menyimpan maklumat daripada pangkalan data MS SQL Server yang rosak menggunakan program ini Kotak Alat Pemulihan Pelayan SQL dijalankan menggunakan wizard langkah demi langkah. Pada setiap peringkat pengguna mesti melakukan hanya satu tindakan, yang sangat mudah dan praktikal.

Langkah pertama ialah memilih pangkalan data MS SQL Server yang rosak. Cara paling mudah untuk melakukan ini ialah menggunakan Windows Explorer, yang dilancarkan apabila anda mengklik butang. Sambungan *.mdf dan *.ndf (sambungan pangkalan data MS SQL Server standard) ditentukan secara automatik sebagai penapis pilihan. Semua fail yang pernah dianalisis ditambah ke senarai akses pantas khas. Pada masa hadapan, untuk memilihnya, pengguna hanya perlu klik pada ikon, gerakkan kursor ke dokumen yang dikehendaki dalam senarai yang terbuka, dan klik pada butang kiri tetikus.

Peralihan ke peringkat seterusnya dijalankan menggunakan butang Seterusnya. Dalam kes ini, program akan memaparkan kotak dialog yang bertanya sama ada perlu atau tidak untuk menganalisis fail sumber. Jika jawapannya ya, ia mendapatkan semula data perkhidmatan daripada pangkalan data yang rosak dan memaparkan maklumat yang boleh dipulihkan. Untuk kemudahan pengguna, tetingkap dibahagikan kepada dua bahagian. Di sebelah kiri, semua kategori maklumat yang mungkin dipaparkan: jadual pengguna dan sistem (Jadual Pengguna dan Jadual Sistem), paparan (Paparan), Prosedur Tersimpan (Prosedur Tersimpan), fungsi (Fungsi) dan Jenis Data Ditentukan Pengguna. Apabila anda meletakkan kursor pada mana-mana daripadanya, senarai objek yang tersedia dan kandungannya akan ditunjukkan di sebelah kanan. Pengguna mesti menyemaknya dengan teliti dan memastikan bahawa program itu Kotak Alat Pemulihan Pelayan SQL akan mengatasi tugas itu dan sebenarnya akan dapat memulihkan data yang hilang.

Langkah seterusnya ialah memilih kaedah untuk menyimpan maklumat. Hakikatnya ialah dalam utiliti yang dimaksudkan, data yang diekstrak daripada fail yang rosak boleh disimpan ke cakera keras dalam bentuk satu set skrip dalam SQL atau dieksport terus ke pangkalan data MS SQL Server. Pilihan pertama adalah baik kerana ia membolehkan anda memindahkan maklumat yang diekstrak ke mana-mana pelayan. Untuk melakukan ini, hanya salin pakej skrip yang terhasil ke komputer yang dikehendaki dan jalankannya di sana. Dan pilihan kedua adalah lebih mudah dalam kes di mana PC di mana pemulihan sedang dijalankan mempunyai sambungan ke pangkalan data yang diperlukan. Dalam kes ini, maklumat dieksport kepadanya tanpa sebarang tindakan tambahan.

Seterusnya, pengguna perlu memilih maklumat yang perlu dipulihkan daripada fail yang rosak dan disimpan. Untuk tujuan ini program Kotak Pemulihan SQL sekali lagi memaparkan pada skrin apa yang dia boleh ekstrak. Dan pengguna mesti memilih data yang dia perlukan dengan menanda/menyahtanda kotak pilihan. Anda boleh memilih atau menyahpilih keseluruhan pangkalan data, keseluruhan kategori maklumat, atau objek individu (jadual, paparan, prosedur tersimpan, dll.) sekaligus.

Selepas melengkapkan pemilihan, anda boleh memulakan proses mengimbas fail sumber dan menyimpan maklumat yang diekstrak daripadanya. Untuk melakukan ini, klik pada butang Mulakan Pemulihan. Tempoh kerja ini bergantung kepada dua faktor. Pertama, pada fail sumber, struktur dan saiznya. Dan kedua, mengenai prestasi komputer di mana ia dilaksanakan. Perlu diingat bahawa dalam beberapa kes pangkalan data adalah besar, dan oleh itu memulihkan maklumat daripadanya mungkin mengambil masa beberapa hari. Sejurus selepas proses selesai, Kotak Alat Pemulihan Pelayan SQL akan memaparkan log. Ia menyediakan data tentang semua proses pemulihan maklumat yang dilaksanakan semasa sesi kerja semasa.

Oleh itu, program Kotak Alat Pemulihan Pelayan SQL ialah alat yang berjaya untuk memulihkan data daripada pangkalan data MS SQL Server yang rosak. Ia dibezakan oleh dua ciri. Yang pertama ialah kecekapan. Utiliti yang dimaksudkan mampu memulihkan sebanyak mungkin maklumat daripada fail yang rosak. Ciri kedua Kotak Alat Pemulihan Pelayan SQL ialah kemudahan penggunaannya yang melampau. Dengan bantuan program ini, mana-mana pengguna, walaupun baru mula mengkaji komputer, boleh mengekstrak maklumat daripada pangkalan data yang rosak dan menyimpannya tanpa latihan terlebih dahulu.