Mengembalikan Database ke Rekam Jepret Database

Berlaku untuk:SQL Server

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

Batasan dan Pembatasan

Mengembalikan tidak didukung dalam kondisi berikut:

  • Ada beberapa rekam jepret untuk database. Untuk mengembalikan, hanya boleh ada satu rekam jepret untuk 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:

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.

  1. 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).

  2. 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).

  3. 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.

  4. 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.

  5. Mulai database.

  6. 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 AdventureWorks2022 database. 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:

--Test to see if sales_snapshot0600 exists and if it   
-- does, delete it.  
IF EXISTS (SELECT database_id 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)