Mengembalikan Database ke Rekam Jepret Database
Jika data dalam database online rusak, dalam beberapa kasus, mengembalikan database ke rekam jepret database yang mendahului kerusakan mungkin merupakan alternatif yang sesuai untuk memulihkan database dari cadangan. Misalnya, mengembalikan database mungkin berguna untuk membalikkan kesalahan pengguna serius baru-baru ini, seperti tabel yang dihilangkan. Namun, semua perubahan yang dilakukan setelah rekam jepret dibuat hilang.
Sebelum Anda mulai:
Untuk Mengembalikan Database ke Rekam Jepret Database, menggunakan: Transact-SQL
Sebelum Anda mulai
Batasan dan Pembatasan
Mengembalikan tidak didukung dalam kondisi berikut:
Database saat ini hanya boleh memiliki satu rekam jepret database, yang anda rencanakan untuk dikembalikan.
Ada grup file baca-saja atau terkompresi dalam database.
File apa pun sekarang offline tetapi sedang online ketika rekam jepret dibuat.
Sebelum mengembalikan database, pertimbangkan batasan berikut:
Mengembalikan tidak ditujukan untuk pemulihan media. . Rekam jepret database adalah salinan file database yang tidak lengkap, jadi jika database atau rekam jepret database rusak, mengembalikan dari rekam jepret kemungkinan tidak mungkin. Selain itu, bahkan ketika memungkinkan, kembali jika terjadi korupsi tidak mungkin untuk memperbaiki masalah. Oleh karena itu, mengambil cadangan reguler dan menguji rencana pemulihan Anda sangat penting untuk melindungi database. Untuk informasi selengkapnya, lihat Mencadangkan dan Memulihkan Database SQL Server.
Catatan
Jika Anda harus dapat memulihkan database sumber ke titik waktu di mana Anda membuat rekam jepret database, gunakan model pemulihan penuh dan terapkan kebijakan pencadangan yang memungkinkan Anda melakukannya.
Database sumber asli ditimpa oleh database yang dikembalikan, sehingga pembaruan apa pun pada database karena pembuatan rekam jepret hilang.
Operasi kembali juga menimpa file log lama dan membangun kembali log. Akibatnya, Anda tidak dapat menggulung database yang dikembalikan ke titik kesalahan pengguna. Oleh karena itu, kami sarankan Anda mencadangkan log sebelum mengembalikan database.
Catatan
Meskipun Anda tidak dapat memulihkan log asli untuk meneruskan database, informasi dalam file log asli dapat berguna untuk menyusun ulang data yang hilang.
Mengembalikan memutus rantai cadangan log. Oleh karena itu, sebelum Anda dapat mengambil cadangan log dari database yang dikembalikan, Anda harus terlebih dahulu mengambil cadangan database lengkap atau cadangan file. Kami merekomendasikan pencadangan database lengkap.
Selama operasi pengembalian, rekam jepret dan database sumber tidak tersedia. Database sumber dan rekam jepret keduanya ditandai "Dalam pemulihan." Jika terjadi kesalahan selama operasi kembali, ketika database dimulai lagi, operasi kembali akan mencoba untuk menyelesaikan kembali.
Metadata database yang dikembalikan sama dengan metadata pada saat rekam jepret.
Mengembalikan menghilangkan semua katalog teks lengkap.
Prasyarat
Pastikan database sumber dan rekam jepret database memenuhi prasyarat berikut:
Verifikasi bahwa database belum rusak.
Catatan
Jika database rusak, Anda harus memulihkannya dari cadangan. Untuk informasi selengkapnya, lihat Pemulihan Database Lengkap (Model Pemulihan Sederhana) atau Pemulihan Database Lengkap (Model Pemulihan Penuh).
Identifikasi rekam jepret terbaru yang dibuat sebelum kesalahan. Untuk informasi selengkapnya, lihat Menampilkan Rekam Jepret Database (SQL Server).
Hilangkan rekam jepret lain yang saat ini ada di database. Untuk informasi selengkapnya, lihat Menghilangkan Rekam Jepret Database (Transact-SQL).
Keamanan
Izin
Setiap pengguna yang memiliki izin RESTORE DATABASE pada database sumber dapat mengembalikannya ke statusnya saat rekam jepret database dibuat.
Cara Mengembalikan Database ke Rekam Jepret Database (Menggunakan Transact-SQL)
Untuk mengembalikan database ke rekam jepret database
Catatan
Untuk contoh prosedur ini, lihat Contoh (Transact-SQL), nanti di bagian ini.
Identifikasi rekam jepret database yang ingin Anda kembalikan databasenya. Anda dapat melihat rekam jepret pada database di SQL Server Management Studio (lihat Menampilkan Rekam Jepret Database (SQL Server)). Selain itu, Anda dapat mengidentifikasi database sumber tampilan dari kolom source_database_id tampilan katalog sys.databases (Transact-SQL).
Hilangkan rekam jepret database lainnya.
Untuk informasi tentang menghilangkan rekam jepret, lihat Menghilangkan Rekam Jepret Database (Transact-SQL). Jika database menggunakan model pemulihan penuh, sebelum kembali, Anda harus mencadangkan log. Untuk informasi selengkapnya, lihat Mencadangkan Log Transaksi (SQL Server) atau Mencadangkan Log Transaksi Saat Database Rusak (SQL Server).
Lakukan operasi kembali.
Operasi pengembalian memerlukan izin RESTORE DATABASE pada database sumber. Untuk mengembalikan database, gunakan pernyataan Transact-SQL berikut:
MEMULIHKAN DATABASE database_name DARI database_snapshot_name DATABASE_SNAPSHOT =
Di mana database_name adalah database sumber dan database_snapshot_name adalah nama rekam jepret yang ingin Anda kembalikan databasenya. Perhatikan bahwa dalam pernyataan ini, Anda harus menentukan nama rekam jepret daripada perangkat cadangan.
Untuk informasi selengkapnya, lihat RESTORE (Transact-SQL).
Catatan
Selama operasi pengembalian, rekam jepret dan database sumber tidak tersedia. Database sumber dan rekam jepret keduanya ditandai sebagai "Dalam pemulihan." Jika terjadi kesalahan selama operasi kembali, ia akan mencoba untuk menyelesaikan kembali ketika database dimulai lagi.
Jika pemilik database berubah sejak pembuatan rekam jepret database, Anda mungkin ingin memperbarui pemilik database database yang dikembalikan.
Catatan
Database yang dikembalikan mempertahankan izin dan konfigurasi (seperti pemilik database dan model pemulihan) dari rekam jepret database.
Mulai database.
Secara opsional, cadangkan database yang dikembalikan, terutama jika menggunakan model pemulihan lengkap (atau dicatat massal). Untuk mencadangkan database, lihat Membuat Pencadangan Database Lengkap (SQL Server).
Contoh (Transact-SQL)
Bagian ini berisi contoh berikut mengembalikan database ke rekam jepret database:
J. Mengembalikan rekam jepret pada database AdventureWorks
Contoh ini mengasumsikan bahwa hanya satu rekam jepret yang saat ini ada di database AdventureWorks2012 . Untuk contoh yang membuat rekam jepret tempat database dikembalikan di sini, lihat Membuat Rekam Jepret Database (Transact-SQL).
USE master;
-- Reverting AdventureWorks to AdventureWorks_dbss1800
RESTORE DATABASE AdventureWorks from
DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO
B. Mengembalikan rekam jepret pada database Penjualan
Contoh ini mengasumsikan bahwa dua rekam jepret saat ini ada di database Penjualan : sales_snapshot0600 dan sales_snapshot1200. Contoh menghapus rekam jepret yang lebih lama dan mengembalikan database ke rekam jepret yang lebih baru.
Untuk kode untuk membuat database sampel dan rekam jepret yang bergantung pada contoh ini, lihat:
Untuk database Penjualan dan rekam jepret sales_snapshot0600, lihat "Membuat database dengan grup file" dan "Membuat rekam jepret database" di CREATE DATABASE (SQL Server Transact-SQL).
Untuk rekam jepret sales_snapshot1200, lihat "Membuat rekam jepret pada database Penjualan" di Membuat Rekam Jepret Database (Transact-SQL).
--Test to see if sales_snapshot0600 exists and if it
-- does, delete it.
IF EXISTS (SELECT dbid FROM sys.databases
WHERE NAME='sales_snapshot0600')
DROP DATABASE SalesSnapshot0600;
GO
-- Reverting Sales to sales_snapshot1200
USE master;
RESTORE DATABASE Sales FROM DATABASE_SNAPSHOT = 'sales_snapshot1200';
GO
Tugas Terkait
Lihat Juga
Rekam Jepret Database (SQL Server)
RESTORE (Transact-SQL)
sys.databases (T-SQL)
Pencerminan Database dan Rekam Jepret Database (SQL Server)