Biasanya ketika kita memulai cadangan kita tidak mengizinkan perubahan untuk melakukan atau database tidak akan dapat diakses. Maksud saya database akan berada dalam mode pengguna tunggal tetapi saya ingin memulai cadangan dan melepaskan db untuk digunakan. Juga, begitu saya memulai cadangan saya tidak ingin perubahan yang sedang berlangsung ditulis ke file cadangan. Saya ingin tahu bagaimana saya bisa mencapai ini di Microsoft SQL Server 2012. Tolong bantu saya.
Baiklah, izinkan saya menjelaskan masalah saya dulu. Saat ini saya sedang mengatur basis data ke mode satu pengguna sampai cadangan selesai. Mode ini akan membantu saya menghindari perubahan data saat cadangan sedang berlangsung. Tetapi aplikasi saya terikat dengan banyak basis data (setiap basis data saling terkait satu sama lain dan ada var dbs yang terus membuat setiap bulan). Jadi membuat cadangan semua database ini telah menjadi proses yang membosankan dan yang lebih penting saya harus menjaga pengguna keluar dari sistem ketika cadangan sedang berlangsung.
Jadi saya mencari mekanisme cadangan yang akan memenuhi persyaratan yang disebutkan di bawah ini.
- Mulai pencadangan semua dbs sekaligus dan lepaskan db untuk digunakan.
- Karena basis data saling terkait satu sama lain, saya ingin memiliki konsistensi data yang dipelihara dalam file cadangan. Jadi karena persyaratan konsistensi data ini saya tidak ingin ada perubahan yang dilakukan untuk file cadangan saya.
Yang saya inginkan adalah - cadangan semua dbs pada waktu tertentu.
sumber
Jawaban:
Saya berasumsi bahwa tugas Anda adalah membuat satu set cadangan tempat Anda dapat mengembalikan semuanya ke satu titik statis (tanpa transaksi terbuka) (semuanya tersinkron). Mirip dengan apa yang akan dilakukan titik tenang untuk Anda di DB2. Sayangnya tidak ada dalam SQL Server yang melakukan hal itu. Namun, dengan asumsi database Anda dalam mode pemulihan LENGKAP, Anda dapat melakukan hal serupa.
Anda dapat membuat satu
MARKED
transaksi di semua basis data sekaligus . Kemudian Anda mengambil cadangan log transaksi dari setiap basis data. Dengan asumsi Anda mengikuti backup log Anda (yang seharusnya Anda lakukan) backup log tidak butuh waktu lama. Dan tidak perlu menghentikan siapa pun dari sistem (kecuali mungkin cukup lama bagi Anda untuk membuat transaksi yang ditandai).Pada titik ini jika Anda perlu melakukan restore maka Anda melakukan
RESTORE STOPBEFOREMARK
pada setiap database Anda. Ini akan mengembalikan semua database ke titik yang sama (berdasarkan transaksi Anda). Catatan: Ada juga STOPATMARK jika Anda ingin memasukkan transaksi itu.Jika Anda ingin contoh, saya punya satu di tautan di atas bersama dengan sedikit bacaan tambahan.
Saya menyadari ini tidak menjawab pertanyaan Anda, tetapi semoga bisa menyelesaikan masalah Anda.
sumber
Pertanyaan Anda serupa dengan yang saya jawab - Mencadangkan & memulihkan 10-20 database SQL Server ke kondisi ~ sinkron?
Dengan asumsi model pemulihan basis data Anda LENGKAP, Anda harus mengambil cadangan Penuh dan kemudian menggunakan Transaksi yang Ditandai .
Mari sanggah mitos Anda ...
Dari mitos cadangan (Sangat disarankan agar Anda membaca semua Mitos cadangan) :
Transaksi bertanda akan membantu Anda mengambil cadangan LOG yang konsisten dan Anda akan dapat mengembalikannya menggunakan
RESTORE ... WITH STOPBEFOREMARK = '<mark_name>'
Ingatlah bahwa transaksi yang ditandai untuk semua database pada instance juga dicatat dalam
dbo.logmarkhistory
tabel dalamMSDB
database.sumber
untuk lebih jelasnya: https://blogs.technet.microsoft.com/letsdothis/2013/11/06/backup-multiple-sql-databases-in-a-single-swoop/
sumber