Rekam jepret database (SQL Server)
Berlaku untuk: SQL Server
Rekam jepret database adalah tampilan statis baca-saja dari database SQL Server ( database sumber). Rekam jepret database secara transaksional konsisten dengan database sumber pada saat pembuatan rekam jepret. Rekam jepret database selalu berada di instans server yang sama dengan database sumbernya. Meskipun rekam jepret database menyediakan tampilan data baca-saja dalam status yang sama seperti saat rekam jepret dibuat, ukuran file rekam jepret tumbuh saat perubahan dilakukan pada database sumber.
Rekam jepret database dibuat dengan sintaksIS CREATE DATABASE T-SQL, menggunakan sintaks.AS SNAPSHOT OF
Beberapa rekam jepret dapat ada pada database sumber tertentu. Setiap rekam jepret database bertahan sampai secara eksplisit dihilangkan oleh pemilik database.
Catatan
Rekam jepret database tidak terkait dengan cadangan rekam jepret, cadangan rekam jepret Transact-SQL, isolasi rekam jepret transaksi, atau replikasi rekam jepret.
Gambaran umum rekam jepret database
Rekam jepret database beroperasi di tingkat halaman data. Sebelum halaman database sumber dimodifikasi untuk pertama kalinya, halaman asli disalin dari database sumber ke rekam jepret. Rekam jepret menyimpan halaman asli, mempertahankan rekaman data seperti yang ada saat rekam jepret dibuat. Proses yang sama diulang untuk setiap halaman yang sedang dimodifikasi untuk pertama kalinya. Bagi pengguna, rekam jepret database tampaknya tidak pernah berubah, karena operasi baca pada rekam jepret database selalu mengakses halaman data asli, terlepas dari di mana mereka berada.
Untuk menyimpan halaman asli yang disalin, rekam jepret menggunakan satu atau beberapa file jarang. Awalnya, file jarang adalah file yang pada dasarnya kosong yang tidak berisi data pengguna dan belum dialokasikan ruang disk untuk data pengguna. Karena semakin banyak halaman yang diperbarui dalam database sumber, ukuran file bertambah. Gambar berikut mengilustrasikan efek dari dua pola pembaruan yang kontras pada ukuran rekam jepret. Pola pembaruan A mencerminkan lingkungan di mana hanya 30 persen halaman asli yang diperbarui selama masa pakai rekam jepret. Pola pembaruan B mencerminkan lingkungan di mana 80 persen halaman asli diperbarui selama masa pakai rekam jepret.
Manfaat rekam jepret database
Rekam jepret dapat digunakan untuk tujuan pelaporan.
Klien dapat mengkueri rekam jepret database, yang membuatnya berguna untuk menulis laporan berdasarkan data pada saat pembuatan rekam jepret.
Mempertahankan data historis untuk pembuatan laporan.
Rekam jepret dapat memperluas akses pengguna ke data dari titik waktu tertentu. Misalnya, Anda dapat membuat rekam jepret database di akhir periode waktu tertentu (seperti kuartal keuangan) untuk pelaporan nanti. Anda kemudian dapat menjalankan laporan akhir periode pada rekam jepret. Jika ruang disk mengizinkan, Anda juga dapat mempertahankan rekam jepret akhir periode tanpa batas waktu, memungkinkan kueri terhadap hasil dari periode ini; misalnya, untuk menyelidiki performa organisasi.
Menggunakan database cermin yang Anda pertahankan untuk tujuan ketersediaan untuk membongkar pelaporan.
Menggunakan rekam jepret database dengan pencerminan database memungkinkan Anda membuat data di server cermin dapat diakses untuk pelaporan. Selain itu, menjalankan kueri pada database cermin dapat membebaskan sumber daya pada prinsipal. Untuk informasi selengkapnya, lihat Pencerminan Database dan Rekam Jepret Database (SQL Server).
Melindungi data dari kesalahan administratif.
Jika terjadi kesalahan pengguna pada database sumber, Anda dapat mengembalikan database sumber ke status saat rekam jepret database tertentu dibuat. Kehilangan data terbatas pada pembaruan database sejak pembuatan rekam jepret.
Misalnya, sebelum melakukan pembaruan besar, seperti pembaruan massal atau perubahan skema, buat rekam jepret database pada database melindungi data. Jika Anda membuat kesalahan, Anda dapat menggunakan rekam jepret untuk memulihkan dengan mengembalikan database ke rekam jepret. Mengembalikan berpotensi jauh lebih cepat untuk tujuan ini daripada memulihkan dari cadangan; namun, Anda tidak dapat bergulir ke depan setelahnya.
Penting
Mengembalikan tidak berfungsi dalam database offline atau rusak. Oleh karena itu, mengambil cadangan reguler dan menguji rencana pemulihan Anda diperlukan untuk melindungi database.
Catatan
Rekam jepret database bergantung pada database sumber. Oleh karena itu, menggunakan rekam jepret database untuk mengembalikan database bukanlah pengganti strategi pencadangan dan pemulihan Anda. Melakukan semua pencadangan terjadwal Anda tetap penting. Jika Anda harus memulihkan database sumber ke titik waktu di mana Anda membuat rekam jepret database, terapkan kebijakan pencadangan yang memungkinkan Anda melakukannya.
Melindungi data dari kesalahan pengguna.
Dengan membuat rekam jepret database secara teratur, Anda dapat mengurangi dampak kesalahan pengguna utama, seperti tabel yang dihilangkan. Untuk tingkat perlindungan yang tinggi, Anda dapat membuat serangkaian rekam jepret database yang mencakup cukup waktu untuk mengenali dan merespons sebagian besar kesalahan pengguna. Misalnya, Anda dapat mempertahankan 6 hingga 12 rekam jepret bergulir yang mencakup interval 24 jam, tergantung pada sumber daya disk Anda. Kemudian, setiap kali rekam jepret baru dibuat, rekam jepret paling awal dapat dihapus.
Untuk memulihkan dari kesalahan pengguna, Anda dapat mengembalikan database ke rekam jepret segera sebelum kesalahan. Mengembalikan berpotensi jauh lebih cepat untuk tujuan ini daripada memulihkan dari cadangan; namun, Anda tidak dapat bergulir ke depan setelahnya.
Atau, Anda mungkin dapat secara manual membangun ulang tabel yang dihilangkan atau data lain yang hilang dari informasi dalam rekam jepret. Misalnya, Anda dapat menyalin data secara massal dari rekam jepret ke dalam database dan menggabungkan data secara manual kembali ke database.
Catatan
Alasan Anda untuk menggunakan rekam jepret database menentukan berapa banyak rekam jepret bersamaan yang Anda butuhkan pada database, seberapa sering membuat rekam jepret baru, dan berapa lama untuk menyimpannya.
Mengelola database pengujian.
Dalam lingkungan pengujian, ini dapat berguna ketika berulang kali menjalankan protokol pengujian untuk database agar berisi data yang identik di awal setiap putaran pengujian. Sebelum menjalankan putaran pertama, pengembang aplikasi atau penguji dapat membuat rekam jepret database pada database pengujian. Setelah setiap eksekusi pengujian, database dapat dengan cepat dikembalikan ke keadaan sebelumnya dengan mengembalikan rekam jepret database.
Syarat dan Definisi
Snapshot database
Tampilan statis database yang konsisten secara transaksional, baca-saja, (database sumber).
Database sumber
Untuk rekam jepret database, database tempat rekam jepret dibuat. Rekam jepret database bergantung pada database sumber. Rekam jepret database harus berada di instans server yang sama dengan database. Selain itu, jika database tersebut menjadi tidak tersedia karena alasan apa pun, semua rekam jepret databasenya juga menjadi tidak tersedia.
File jarang
File yang disediakan oleh sistem file NTFS yang membutuhkan ruang disk jauh lebih sedikit daripada yang diperlukan. File jarang digunakan untuk menyimpan halaman yang disalin ke rekam jepret database. Ketika pertama kali dibuat, file jarang membutuhkan sedikit ruang disk. Saat data ditulis ke rekam jepret database, NTFS mengalokasikan ruang disk secara bertahap ke file jarang yang sesuai.
Prasyarat untuk rekam jepret database
Database sumber, yang dapat menggunakan model pemulihan apa pun, harus memenuhi prasyarat berikut:
Instans server harus berjalan pada edisi SQL Server yang mendukung rekam jepret database. Untuk informasi selengkapnya, lihat Fitur yang Didukung oleh Edisi SQL Server 2016.
Database sumber harus online, kecuali database adalah database cermin dalam sesi pencerminan database.
Anda dapat membuat rekam jepret database pada database utama atau sekunder apa pun dalam grup ketersediaan. Peran replika harus PRIMER atau SEKUNDER, bukan dalam status PENYELESAIAN.
Kami menyarankan agar status sinkronisasi database adalah SYNCHRONIZING atau SYNCHRONIZED saat Anda membuat rekam jepret database. Namun, rekam jepret database dapat dibuat ketika status sinkronisasi database TIDAK DISINKRONKAN.
Untuk informasi selengkapnya, lihat Rekam Jepret Database dengan Grup Ketersediaan AlwaysOn (SQL Server).
Untuk membuat rekam jepret database pada database cermin, database harus dalam status pencerminan YANG DISINKRONKAN.
Database sumber tidak dapat dikonfigurasi sebagai database bersama yang dapat diskalakan.
Sebelum SQL Server 2019, database sumber tidak dapat berisi grup file MEMORY_OPTIMIZED_DATA. Dukungan untuk rekam jepret database dalam memori ditambahkan di SQL Server 2019.
Semua model pemulihan mendukung rekam jepret database.
Batasan pada database sumber
Selama rekam jepret database ada, batasan berikut ada pada database sumber rekam jepret:
Database tidak dapat dihilangkan, dilepas, atau dipulihkan.
Mencadangkan database sumber bekerja secara normal; ini tidak terpengaruh oleh rekam jepret database.
Performa berkurang, karena peningkatan I/O pada database sumber yang dihasilkan dari operasi salin-tulis ke rekam jepret setiap kali halaman diperbarui.
File tidak dapat dihilangkan dari database sumber atau dari rekam jepret apa pun.
Batasan rekam jepret database
Batasan berikut berlaku untuk rekam jepret database:
Rekam jepret database harus dibuat dan tetap berada di instans server yang sama dengan database sumber.
Rekam jepret database selalu berfungsi pada seluruh database.
Rekam jepret database bergantung pada database sumber dan bukan penyimpanan redundan. Mereka tidak melindungi dari kesalahan disk atau jenis kerusakan lainnya. Oleh karena itu, menggunakan rekam jepret database untuk mengembalikan database bukanlah pengganti strategi pencadangan dan pemulihan Anda. Melakukan semua pencadangan terjadwal Anda tetap penting. Jika Anda harus memulihkan database sumber ke titik waktu di mana Anda membuat rekam jepret database, terapkan kebijakan pencadangan yang memungkinkan Anda melakukannya.
Ketika halaman diperbarui pada database sumber didorong ke rekam jepret, jika rekam jepret kehabisan ruang disk atau mengalami beberapa kesalahan lain, rekam jepret menjadi tersangka dan harus dihapus.
Rekam jepret bersifat baca-saja. Karena hanya dibaca, mereka tidak dapat ditingkatkan. Oleh karena itu, rekam jepret database tidak diharapkan layak setelah peningkatan.
Rekam jepret
model
database ,master
, dantempdb
dilarang.Anda tidak dapat mengubah spesifikasi file rekam jepret database.
Anda tidak dapat menghapus file dari rekam jepret database.
Anda tidak dapat mencadangkan atau memulihkan rekam jepret database.
Anda tidak dapat melampirkan atau melepaskan rekam jepret database.
Anda tidak dapat membuat rekam jepret database pada sistem file FAT32 atau partisi RAW. File jarang yang digunakan oleh rekam jepret database disediakan oleh sistem file NTFS.
Pengindeksan teks penuh tidak didukung pada rekam jepret database. Katalog teks lengkap tidak disebarluaskan dari database sumber.
Rekam jepret database mewarisi batasan keamanan database sumbernya pada saat pembuatan rekam jepret. Karena rekam jepret bersifat baca-saja, izin yang diwariskan tidak dapat diubah dan perubahan izin yang dilakukan pada sumber tidak akan tercermin dalam rekam jepret yang ada.
Rekam jepret selalu mencerminkan status grup file pada saat pembuatan rekam jepret: grup file online tetap online, dan grup file offline tetap offline. Untuk informasi selengkapnya, lihat "Rekam Jepret Database dengan Grup File Offline" nanti dalam topik ini.
Jika database sumber menjadi RECOVERY_PENDING, rekam jepret databasenya mungkin menjadi tidak dapat diakses. Namun, setelah masalah pada database sumber diselesaikan, rekam jepretnya akan tersedia lagi.
Mengembalikan tidak didukung untuk file terkompresi NTFS baca-saja atau NTFS dalam database. Upaya untuk mengembalikan database yang berisi salah satu jenis grup file ini akan gagal.
Dalam konfigurasi pengiriman log, rekam jepret database hanya dapat dibuat pada database utama, bukan pada database sekunder. Jika Anda beralih peran antara instans server utama dan instans server sekunder, Anda harus menghilangkan semua rekam jepret database sebelum Anda dapat mengatur database utama sebagai database sekunder.
Rekam jepret database tidak dapat dikonfigurasi sebagai database bersama yang dapat diskalakan.
Grup file FILESTREAM tidak didukung oleh rekam jepret database. Jika grup file FILESTREAM ada di database sumber, grup file ditandai sebagai offline dalam rekam jepret databasenya, dan rekam jepret database tidak dapat digunakan untuk mengembalikan database.
Catatan
Pernyataan SELECT yang dijalankan pada rekam jepret database tidak boleh menentukan kolom FILESTREAM; jika tidak, pesan kesalahan berikut akan dikembalikan:
Could not continue scan with NOLOCK due to data movement.
Ketika statistik pada rekam jepret baca-saja hilang atau basi, Mesin Database membuat dan mempertahankan statistik sementara di
tempdb
. Untuk informasi selengkapnya, lihat Statistik.
Persyaratan ruang disk
Rekam jepret database menggunakan ruang disk. Jika rekam jepret database kehabisan ruang disk, rekam jepret tersebut ditandai sebagai tersangka dan harus dihilangkan. (Namun, database sumber tidak terpengaruh; tindakan di atasnya berlanjut secara normal.)
Dibandingkan dengan salinan lengkap database, namun, rekam jepret sangat hemat ruang. Rekam jepret hanya memerlukan penyimpanan yang cukup untuk halaman yang berubah selama masa pakainya. Umumnya, rekam jepret disimpan untuk waktu yang terbatas, sehingga ukurannya tidak menjadi perhatian utama.
Namun, semakin lama Anda menyimpan rekam jepret, semakin besar kemungkinan untuk menggunakan ruang yang tersedia. Ukuran maksimum tempat file jarang dapat tumbuh adalah ukuran file database sumber yang sesuai pada saat pembuatan rekam jepret. Jika rekam jepret database kehabisan ruang disk, rekam jepret harus dihapus (dihilangkan).
Catatan
Kecuali untuk ruang file, rekam jepret database mengonsumsi kira-kira sebanyak sumber daya sebagai database.
Rekam jepret database dengan grup file offline
Grup file offline dalam database sumber memengaruhi rekam jepret database saat Anda mencoba melakukan salah satu hal berikut ini:
Membuat rekam jepret
Ketika database sumber memiliki satu atau beberapa grup file offline, pembuatan rekam jepret berhasil dengan grup file offline. File jarang tidak dibuat untuk grup file offline.
Membuat grup file offline
Anda dapat mengambil file secara offline di database sumber. Namun, grup file tetap online dalam rekam jepret database jika online saat rekam jepret dibuat. Jika data yang dikueri telah berubah sejak pembuatan rekam jepret, halaman data asli akan dapat diakses dalam rekam jepret. Namun, kueri yang menggunakan rekam jepret untuk mengakses data yang tidak dimodifikasi dalam grup file kemungkinan akan gagal dengan kesalahan input/output (I/O).
Bawa grup file online
Anda tidak dapat membawa grup file online dalam database yang memiliki rekam jepret database apa pun. Jika grup file offline pada saat pembuatan rekam jepret atau diambil offline saat rekam jepret database ada, grup file tetap offline. Ini karena membawa file kembali online melibatkan pemulihannya, yang tidak dimungkinkan jika rekam jepret database ada di database.
Mengembalikan database sumber ke rekam jepret
Mengembalikan database sumber ke rekam jepret database mengharuskan semua grup file online kecuali untuk grup file yang offline saat rekam jepret dibuat.