Memulihkan Database SQL Server ke Titik Waktu (Model Pemulihan Penuh)

Berlaku untuk:SQL Server

Topik ini menjelaskan cara memulihkan database ke titik waktu tertentu di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL. Topik ini hanya relevan untuk database SQL Server yang menggunakan model pemulihan penuh atau dicatat secara massal.

Penting

Di bawah model pemulihan yang dicatat secara massal, jika cadangan log berisi perubahan yang dicatat secara massal, pemulihan point-in-time tidak dimungkinkan ke titik dalam cadangan tersebut. Database harus dipulihkan ke akhir pencadangan log transaksi.

Sebelum Anda mulai

Rekomendasi

  • Gunakan SIAGA untuk menemukan titik waktu yang tidak diketahui.

  • Tentukan titik waktu di awal dalam urutan pemulihan

Keamanan

Izin

Jika database yang dipulihkan tidak ada, pengguna harus memiliki izin CREATE DATABASE untuk dapat menjalankan RESTORE. Jika database ada, izin RESTORE default ke anggota peran server tetap sysadmin dan dbcreator dan pemilik (dbo) database (untuk opsi FROM DATABASE_SNAPSHOT, database selalu ada).

Izin RESTORE diberikan kepada peran di mana informasi keanggotaan selalu tersedia untuk server. Karena keanggotaan peran database tetap hanya dapat diperiksa ketika database dapat diakses dan tidak rusak, yang tidak selalu terjadi ketika RESTORE dijalankan, anggota peran database tetap db_owner tidak memiliki izin RESTORE.

Menggunakan SQL Server Management Studio

Untuk memulihkan database ke titik waktu tertentu

  1. Di Object Explorer, sambungkan ke instans mesin database SQL Server yang sesuai, dan perluas pohon server.

  2. Luaskan Database. Bergantung pada database, pilih database pengguna atau perluas Database Sistem, lalu pilih database sistem.

  3. Klik kanan database, arahkan ke Tugas, arahkan ke Pulihkan, lalu klik Database.

  4. Pada halaman Umum , gunakan bagian Sumber untuk menentukan sumber dan lokasi kumpulan cadangan yang akan dipulihkan. Pilih salah satu opsi berikut ini:

    • Database

      Pilih database yang akan dipulihkan dari daftar drop-down. Daftar hanya berisi database yang telah dicadangkan sesuai dengan riwayat pencadangan msdb .

    Catatan

    Jika cadangan diambil dari server yang berbeda, server tujuan tidak akan memiliki informasi riwayat cadangan untuk database yang ditentukan. Dalam hal ini, pilih Perangkat untuk menentukan file atau perangkat yang akan dipulihkan secara manual.

    • Perangkat

      Klik tombol telusuri (...) untuk membuka kotak dialog Pilih perangkat cadangan. Dalam kotak Jenis media cadangan, pilih salah satu jenis perangkat yang tercantum. Untuk memilih satu atau beberapa perangkat untuk kotak media Cadangan, klik Tambahkan.

      Setelah Anda menambahkan perangkat yang Anda inginkan ke kotak daftar Media cadangan, klik OK untuk kembali ke halaman Umum .

      Dalam kotak daftar Sumber: Perangkat: Database , pilih nama database yang harus dipulihkan.

      Catatan Daftar ini hanya tersedia ketika Perangkat dipilih. Hanya database yang memiliki cadangan pada perangkat yang dipilih yang akan tersedia.

  5. Di bagian Tujuan , kotak Database secara otomatis diisi dengan nama database yang akan dipulihkan. Untuk mengubah nama database, masukkan nama baru dalam kotak Database .

  6. Klik Garis Waktu untuk mengakses kotak dialog Garis Waktu Cadangan.

  7. Di bagian Pulihkan ke , klik Tanggal dan waktu tertentu.

  8. Gunakan kotak Tanggal dan Waktu atau bilah penggeser untuk menentukan tanggal dan waktu tertentu di mana pemulihan harus berhenti. PilihOK.

    Catatan

    Gunakan kotak Interval Garis Waktu untuk mengubah jumlah waktu yang ditampilkan pada garis waktu.

  9. Setelah Anda menentukan titik waktu tertentu, Database Recovery Advisor memastikan bahwa hanya cadangan yang diperlukan untuk memulihkan ke titik waktu tersebut yang dipilih di kolom Pemulihan kumpulan Cadangan untuk memulihkan kisi. Cadangan yang dipilih ini membentuk rencana pemulihan yang direkomendasikan untuk pemulihan point-in-time Anda. Anda hanya boleh menggunakan cadangan yang dipilih untuk operasi pemulihan point-in-time Anda.

    Untuk informasi tentang kolom di kumpulan Cadangan untuk memulihkan kisi, lihat Memulihkan Database (Halaman Umum). Untuk informasi tentang Database Recovery Advisor, lihat Gambaran Umum Pemulihan dan Pemulihan (SQL Server).

  10. Pada halaman Opsi , di panel Opsi pemulihan, Anda dapat memilih salah satu opsi berikut, jika sesuai dengan situasi Anda:

    • Timpa database yang ada (DENGAN REPLACE)

    • Mempertahankan pengaturan replikasi (WITH KEEP_REPLICATION)

    • Membatasi akses ke database yang dipulihkan (WITH RESTRICTED_USER)

    Untuk informasi selengkapnya tentang opsi ini, lihat Memulihkan Database (Halaman Opsi).

  11. Pilih opsi untuk kotak Status pemulihan . Kotak ini menentukan status database setelah operasi pemulihan.

    • RESTORE WITH RECOVERY adalah perilaku default yang membuat database siap digunakan dengan menggulung balik transaksi yang tidak dilakukan. Log transaksi tambahan tidak dapat dipulihkan. Pilih opsi ini jika Anda memulihkan semua cadangan yang diperlukan sekarang.

    • PULIHKAN DENGAN NORECOVERY yang membuat database tidak beroperasi, dan tidak mengembalikan transaksi yang tidak dilakukan. Log transaksi tambahan dapat dipulihkan. Database tidak dapat digunakan hingga dipulihkan.

    • PULIHKAN DENGAN SIAGA yang meninggalkan database dalam mode baca-saja. Ini membatalkan transaksi yang tidak dilakukan, tetapi menyimpan tindakan batalkan dalam file siaga sehingga efek pemulihan dapat dikembalikan.

    Untuk deskripsi opsi, lihat Memulihkan Database (Halaman Opsi).

  12. Ambil cadangan log ekor sebelum pemulihan akan dipilih jika diperlukan untuk titik waktu yang Telah Anda pilih. Anda tidak perlu mengubah pengaturan ini, tetapi Anda dapat memilih untuk mencadangkan ekor log meskipun tidak diperlukan.

  13. Operasi pemulihan mungkin gagal jika ada koneksi aktif ke database. Centang opsi Tutup koneksi yang ada untuk memastikan bahwa semua koneksi aktif antara Management Studio dan database ditutup. Kotak centang ini mengatur database ke mode pengguna tunggal sebelum melakukan operasi pemulihan, dan mengatur database ke mode multi-pengguna saat selesai.

  14. Pilih Perintah sebelum memulihkan setiap cadangan jika Anda ingin diminta di antara setiap operasi pemulihan. Ini biasanya tidak diperlukan kecuali database besar dan Anda ingin memantau status operasi pemulihan.

Menggunakan T-SQL

Sebelum Anda mulai

Waktu yang ditentukan selalu dipulihkan dari cadangan log. Dalam setiap pernyataan RESTORE LOG dari urutan pemulihan, Anda harus menentukan waktu target atau transaksi Anda dalam klausa STOPAT yang identik. Sebagai prasyarat untuk pemulihan titik waktu, Anda harus terlebih dahulu memulihkan cadangan database lengkap yang titik akhirnya lebih awal dari waktu pemulihan target Anda. Pencadangan database lengkap tersebut dapat lebih lama dari cadangan database lengkap terbaru selama Anda kemudian memulihkan setiap cadangan log berikutnya, hingga dan termasuk cadangan log yang berisi titik waktu target Anda.

Untuk membantu Anda mengidentifikasi cadangan database mana yang akan dipulihkan, Anda dapat secara opsional menentukan klausul WITH STOPAT dalam pernyataan RESTORE DATABASE Anda untuk menimbulkan kesalahan jika cadangan data terlalu baru untuk waktu target yang ditentukan. Pencadangan data lengkap selalu dipulihkan, meskipun berisi waktu target.

Sintaks Transact-SQL Dasar

PULIHKAN DATABASE_NAME LOG DARI <backup_device> DENGAN WAKTU STOPAT=, PEMULIHAN...

Titik pemulihan adalah penerapan transaksi terbaru yang terjadi pada atau sebelum nilai tanggalwaktu yang ditentukan oleh waktu.

Untuk memulihkan hanya modifikasi yang dilakukan sebelum titik waktu tertentu, tentukan dengan waktu STOPAT =untuk setiap cadangan yang Anda pulihkan. Ini memastikan bahwa Anda tidak melewati waktu target.

Untuk memulihkan database ke titik waktu tertentu

Catatan

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

  1. Sambungkan ke instans server tempat Anda ingin memulihkan database.

  2. Jalankan pernyataan RESTORE DATABASE menggunakan opsi NORECOVERY.

    Catatan

    Jika urutan pemulihan parsial mengecualikan grup file FILESTREAM, pemulihan point-in-time tidak didukung. Anda dapat memaksa urutan pemulihan untuk melanjutkan. Namun, grup file FILESTREAM yang dihilangkan dari pernyataan RESTORE Anda tidak pernah dapat dipulihkan. Untuk memaksa pemulihan titik waktu, tentukan opsi CONTINUE_AFTER_ERROR bersama dengan opsi STOPAT, STOPATMARK, atau STOPBEFOREMARK, yang juga harus Anda tentukan dalam pernyataan RESTORE LOG berikutnya. Jika Anda menentukan CONTINUE_AFTER_ERROR, urutan pemulihan parsial berhasil dan grup file FILESTREAM menjadi tidak dapat dipulihkan.

  3. Pulihkan cadangan database diferensial terakhir, jika ada, tanpa memulihkan database (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  4. Terapkan setiap pencadangan log transaksi dalam urutan yang sama di mana mereka dibuat, menentukan waktu di mana Anda ingin menghentikan pemulihan log (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT =time, RECOVERY).

    Catatan

    Opsi RECOVERY dan STOPAT. Jika pencadangan log transaksi tidak berisi waktu yang diminta (misalnya, jika waktu yang ditentukan melampaui akhir waktu yang dicakup oleh log transaksi), peringatan dibuat dan database tetap belum dipulihkan.

Contoh (Transact-SQL)

Contoh berikut memulihkan database ke statusnya sejak aktif 12:00 AMApril 15, 2020 dan memperlihatkan operasi pemulihan yang melibatkan beberapa cadangan log. Pada perangkat cadangan, AdventureWorksBackups, cadangan database lengkap yang akan dipulihkan adalah cadangan ketiga yang ditetapkan pada perangkat (FILE = 3), cadangan log pertama adalah set cadangan keempat (FILE = 4), dan cadangan log kedua adalah set cadangan kelima (FILE = 5).

Penting

Database AdventureWorks2022 menggunakan model pemulihan sederhana. Untuk mengizinkan pencadangan log, sebelum mengambil cadangan database lengkap, database diatur untuk menggunakan model pemulihan penuh, menggunakan ALTER DATABASE AdventureWorks SET RECOVERY FULL.

RESTORE DATABASE AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=3, NORECOVERY;  
  
RESTORE LOG AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';  
  
RESTORE LOG AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';  
RESTORE DATABASE AdventureWorks WITH RECOVERY;   
GO  
  

Tugas Terkait

Lihat Juga

backupset (Transact-SQL)
RESTORE (Transact-SQL)
PULIHKAN HEADERONLY (Transact-SQL)