Bagikan melalui


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 memperbaiki kesalahan serius yang baru saja dilakukan pengguna, seperti penghapusan tabel. Namun, semua perubahan yang dilakukan setelah rekam jepret dibuat hilang.

Sebelum Anda mulai

Batasan dan Pembatasan

Pengembalian tidak didukung dalam kondisi berikut:

  • Ada beberapa rekam jepret untuk database. Untuk melakukan pemulihan, hanya boleh ada satu cuplikan untuk database, yang Anda rencanakan untuk digunakan dalam pemulihan.

  • 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:

  • Pengembalian tidak dimaksudkan 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, mengembalikan kondisi jika terjadi kerusakan data tidak mungkin dapat 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 sejak pembuatan rekam jepret hilang.

  • Operasi pembalikan juga menimpa file log lama dan merekonstruksi log. Akibatnya, Anda tidak dapat memajukan database yang telah di-revert ke titik kesalahan pengguna. Oleh karena itu, kami menyarankan agar 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 ke versi sebelumnya 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 cadangan database lengkap.

  • Selama operasi pengembalian, rekam jepret dan database sumber tidak tersedia. Database sumber dan cuplikan keduanya ditandai "sedang dipulihkan." Jika terjadi kesalahan selama proses balik, ketika database dimulai lagi, proses balik akan mencoba untuk menyelesaikannya.

  • 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-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 cuplikan database

Catatan

Untuk contoh prosedur ini, lihat Contoh (Transact-SQL), nanti di bagian ini.

  1. Identifikasi cuplikan database ke mana Anda ingin mengembalikan database tersebut. 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 dari kolom source_database_id dalam 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 database_snapshot_name

    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 cuplikan keduanya ditandai sebagai "sedang dipulihkan." Jika terjadi kesalahan selama operasi pemulihan, sistem akan mencoba untuk menyelesaikan pemulihan 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 basis data dan model pemulihan) dari cuplikan basis data.

  5. Jalankan 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:

A. Mengembalikan rekam jepret pada database AdventureWorks

Contoh ini mengasumsikan bahwa hanya satu rekam jepret yang saat ini ada di AdventureWorks2025 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)