Bagaimana Kelompok Ketersediaan bekerja dengan pekerjaan yang dijadwalkan dan paket SSIS?

8

Saya memiliki 2 Server SQL yang diatur dengan database di Grup Ketersediaan AlwaysOn.

Saya juga memiliki pekerjaan yang diatur yang berjalan melawan database. Selama failover bagaimana cara memastikan pekerjaan akan terus berjalan di server sekunder? Apakah saya perlu menginstal pekerjaan dan paket SSIS di kedua mesin dan menonaktifkannya secara manual di mesin sekunder ... lalu mengaktifkannya secara manual jika terjadi kegagalan? Atau apakah ada fungsionalitas bawaan untuk menangani ini?

John
sumber

Jawaban:

4

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.

Thomas Stringer
sumber
Itu terdengar menjanjikan. Saya hanya ingin pekerjaan dijalankan di server utama (yang merupakan server pada saat itu).
Yohanes
1

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:

select 
  DB_NAME(database_id),role_desc
from 
  sys.dm_hadr_availability_replica_states a
inner join 
  sys.dm_hadr_database_replica_states d
on 
  a.replica_id = d.replica_id
  and
  a.group_id = d.group_id
where 
  database_id = DB_ID()
and 
  d.is_local = 1

Itu hanya akan membuat Anda tahu peran basis data saat ini.

sdcharle
sumber