Apakah mungkin untuk memiliki SQL Server 2008 R2 Standard secara otomatis menjalankan prosedur tersimpan dalam database yang diberikan yang dikembalikan atau dilampirkan ke instance?
Saya sudah dekat dengan solusi dengan membuat pemicu tingkat server yang mengeksekusi prosedur yang tersimpan dalam database yang diberikan setelah acara DDL CREATE_DATABASE
atau ALTER_DATABASE
dipecat. Sayangnya, ini tidak berfungsi untuk pemulihan cadangan databack.
Untuk menguraikan, kami memiliki prosedur tersimpan 'bersih' yang ada di setiap basis data yang kami pulihkan dan saya sedang mencari cara agar ini dijalankan secara otomatis setiap kali cadangan dikembalikan ke instance.
Googling telah menunjuk saya untuk mengonfigurasi Audit atau Kebijakan di SQL Server untuk mendapatkan fungsionalitas ini, tetapi fitur ini cukup luar biasa pada pandangan pertama, jadi saya tidak tahu apakah Audit atau Kebijakan adalah jalan untuk memulai investigasi.
sumber
EndTime
sepertinya tidak pernah dihuni. Mungkin Anda harus mencoba menyambung ke database dan, jika tidak bisa, lewati dan jangan dokumentasikan acara pemulihan ini, tetapi coba lagi saat nanti pekerjaan berjalan. Saya akan mencoba dan memvalidasi tetapi pada VM lokal saya, saya hanya memiliki SSD tetapi mereka tidak memiliki ruang disk untuk membuat cadangan yang cukup lama untuk mengamati perilaku secara akurat. :-)The
database_started
Diperpanjang Acara dipecat setelah database dipulihkan.Buat sesi acara yang menangkap
database_id
bidang dengan predikat yang terlihat%RESTORE%
disql_text
bidang (catatan: Saya yakin ini cukup - Anda akan ingin menguji sendiri).Saya tidak cukup terbiasa dengan Acara yang Diperpanjang untuk memberi tahu Anda cara terbaik untuk merespons acara tersebut. Alangkah baiknya jika Anda bisa menjalankan prosedur yang tersimpan secara langsung; Saya tidak tahu apakah itu mungkin. Namun, Anda tentu dapat mensurvei buffer acara, dan itu lebih baik daripada memindai jejak default - tidak hanya karena alasan kinerja, tetapi jika server sangat sibuk dan interval pemungutan suara terlalu lama, Anda bisa berakhir dengan peristiwa yang hilang secara langsung. Dengan metode Extended Events, melewatkan acara akan sangat tidak mungkin.
sumber
Seperti yang Anda lihat dari daftar peristiwa DDL , pemicu DDL tidak bisa cukup eksplisit untuk kebutuhan Anda.
Saya akan merekomendasikan menulis skrip PowerShell untuk melakukan restore atau melampirkan dan kemudian jalankan prosedur tersimpan segera berikut. Pikiran Anda, toko Anda harus diinstruksikan untuk menggunakan ini daripada mengembalikan atau melampirkan khas.
Sayangnya saya tidak percaya ada cara bawaan untuk melakukannya.
sumber
Bagaimana Anda menjalankan cadangan Anda? Jika Anda hanya ingin menjalankan SP setelah cadangan, Anda dapat mengaturnya sebagai tugas lain dalam pekerjaan, jika Anda menggunakannya, atau rencana pemeliharaan.
Jadi, Anda dapat mengatur Audit untuk menulis ke log peristiwa dan kemudian membuat lansiran yang akan melaksanakan pekerjaan. Tampaknya berbelit-belit tetapi akan melakukan apa yang Anda minta.
Lihatlah kode berikut:
sumber
Bagaimana Anda menjalankan cadangan Anda? Dengan Commvault Anda dapat mengatur pekerjaan pemulihan otomatis dan menjalankannya sebelum dan pasca skrip pemulihan yang bisa berupa SQL atau PowerShell. Saya melakukan ini sepanjang waktu untuk menjalankan DDL untuk perbedaan versi dan untuk membackup dan mengembalikan izin ketika memulihkan antar lingkungan.
Saya percaya Netbackup dapat produk lain memiliki fungsi serupa
Jika Anda menggunakan SQL, tambahkan saja sebagai langkah ke pekerjaan yang mengembalikan database
sumber