Ya, Anda harus membuat pekerjaan pada replika lain yang Anda inginkan agar pekerjaan spesifik itu dijalankan jika itu adalah replika utama.
Anda harus membuat logika Anda sendiri untuk jika / ketika setiap pekerjaan SQL Server Agent akan berjalan . Misalnya, apakah Anda ingin menjalankan pekerjaan hanya jika instance saat ini adalah replika utama dari Kelompok Ketersediaan tertentu? Anda harus memasukkannya ke dalam pekerjaan Anda. Itu tidak dapat diselimuti secara otomatis, karena itu akan menghilangkan fleksibilitas AlwaysOn AG. Apakah Anda ingin mereka dinonaktifkan pada replika sekunder sepenuhnya terserah Anda, apa pekerjaan itu, dan bagaimana / kapan / jika Anda ingin mereka menjalankannya.
Ingat, server replika sekunder bukan hanya server siaga yang menunggu failover. Ini bisa menjadi server yang berfungsi penuh dan dapat diakses. Karena itu, memiliki setiap pekerjaan duduk dengan menganggur akan menjadi cacat besar.
Jadi, ya, Anda perlu mendorong pekerjaan Anda ke replika lain dan menggunakan beberapa logika tentang apakah pekerjaan itu harus melanjutkan eksekusi ketika itu dimulai.
Misalnya, pekerjaan pencadangan dapat memanfaatkan fungsi sys.fn_hadr_backup_is_preferred_replica dengan menentukan apakah replika saat ini adalah yang disukai untuk database tertentu. Ini akan menurunkan bagaimana Anda memiliki pengaturan Grup Ketersediaan Anda untuk preferensi cadangan.
Saya menemui sedikit frustrasi serupa dengan dokumentasi di Books Online mengatakan 'ketika menjadwalkan pekerjaan Anda, tambahkan logika untuk hanya mengeksekusi pada primer' tetapi tidak mengatakan bagaimana melakukannya. Sys.fn_hadr_backup_is_preferred_replica sangat bagus untuk pekerjaan cadangan, tetapi sepertinya tidak ada fungsi yang sama untuk 'adalah yang utama' atau apa pun yang Anda miliki. Untungnya Anda dapat mengambil info itu dari sesuatu seperti ini:
Itu hanya akan membuat Anda tahu peran basis data saat ini.
sumber