Bagikan melalui


Apa itu grup ketersediaan yang terisolasi?

Berlaku untuk: SQL Server 2022 (16.x)

Grup ketersediaan yang terkandung adalah grup ketersediaan AlwaysOn (AG) yang mendukung:

  • mengelola objek metadata (pengguna, login, izin, pekerjaan SQL Agent, dan sebagainya) di tingkat AG selain tingkat instans.

  • database sistem tertutup khusus dalam AG.

Artikel ini merinci kesamaan, perbedaan, dan fungsionalitas AG yang terkandung.

Gambaran Umum

AG umumnya terdiri dari satu atau beberapa database pengguna yang dimaksudkan untuk beroperasi sebagai grup terkoordinasi, dan yang direplikasi pada beberapa jumlah simpul dalam kluster. Ketika ada kegagalan pada node, atau pada kesehatan SQL Server di node yang menghosting salinan utama, kelompok database dipindahkan secara bersamaan ke node replika lain dalam Availability Group (AG). Semua database pengguna tetap sinkron di semua replika AG, baik dalam mode sinkron atau asinkron.

Ini berfungsi dengan baik untuk aplikasi yang hanya berinteraksi dengan sekumpulan database pengguna tersebut, tetapi ada tantangan ketika aplikasi juga mengandalkan objek seperti pengguna, login, izin, pekerjaan agen, dll., yang disimpan dalam salah satu database sistem (master atau msdb). Agar aplikasi berfungsi dengan lancar dan dapat diprediksi, admin harus secara manual memastikan bahwa setiap perubahan pada objek ini diduplikasi di semua instans replika di AG. Jika instans baru dibawa ke AG, database dapat disemai secara otomatis atau manual dalam proses yang mudah, tetapi kemudian semua penyesuaian database sistem harus dikonfigurasi ulang pada instans baru agar sesuai dengan replika lain.

AG tersimpan memperluas konsep grup database yang direplikasi untuk menyertakan bagian yang relevan dari database master dan msdb. Anggap saja sebagai konteks eksekusi untuk aplikasi menggunakan AG yang terkandung. Idenya adalah bahwa lingkungan AG yang terkandung mencakup pengaturan yang akan memengaruhi aplikasi yang mengandalkannya. Dengan demikian, lingkungan AG yang terkandung menyangkut semua database yang berinteraksi dengan aplikasi, autentikasi yang digunakannya (login, pengguna, izin), pekerjaan terjadwal apa pun yang diharapkan berjalan, dan pengaturan konfigurasi lain yang memengaruhi aplikasi.

Ini berbeda dari database yang terkandung, yang menggunakan mekanisme yang berbeda untuk akun pengguna, menyimpan informasi pengguna dalam database itu sendiri. Database yang berisi hanya mereplikasi login dan pengguna, dan cakupan login atau pengguna yang direplikasi terbatas pada database tunggal tersebut (dan replikanya).

Sebaliknya, dalam AG tertutup, Anda dapat membuat pengguna, login, izin, dan sebagainya pada level AG, dan mereka secara otomatis konsisten di seluruh replika di AG, serta konsisten di seluruh database dalam AG tertutup tersebut. Ini menyelamatkan admin dari harus membuat perubahan ini secara manual.

Perubahan SQL Server 2025

SQL Server 2025 (17.x) memperkenalkan dukungan grup ketersediaan terdistribusi untuk grup ketersediaan yang terkandung.

Perbedaan

Ada beberapa perbedaan praktis yang perlu dipertimbangkan saat bekerja dengan AG terdalam, seperti pembuatan database sistem yang terdalam, dan memaksa koneksi pada tingkat AG terdalam, daripada menghubungkan pada tingkat instans.

Database sistem yang terkandung

AG yang masing-masing berisi memiliki database sistem sendiri, master, dan msdb, yang dinamai sesuai dengan nama grup ketersediaannya. Misalnya, dalam AG MyContainedAGyang terkandung, Anda memiliki database bernama MyContainedAG_master dan MyContainedAG_msdb. Database sistem ini secara otomatis ditanamkan ke replika baru dan pembaruan direplikasi ke database ini sama seperti database lain dalam grup ketersediaan. Ini berarti bahwa ketika Anda menambahkan objek seperti login, atau job agen saat terhubung ke AG yang terkandung, ketika AG yang terkandung dialihkan ke instans lain, dengan terhubung ke AG yang terkandung, Anda masih melihat job agen, dan dapat mengautentikasi menggunakan login yang dibuat di AG yang terkandung.

Penting

AG Terbatas adalah mekanisme untuk menjaga konfigurasi lingkungan eksekusi agar tetap konsisten pada seluruh replika dalam grup ketersediaan. Mereka tidak mewakili batas keamanan. Tidak ada batasan yang menghalangi koneksi ke AG yang terkandung untuk mengakses database di luar AG, misalnya.

Database sistem dalam AG yang baru dibuat bukan salinan dari instans tempat perintah CREATE AVAILABILITY GROUP dijalankan. Templat awalnya kosong tanpa data apa pun. Segera setelah pembuatan, akun admin pada instans yang menciptakan AG terkontain disalin ke dalam AG masterterkontain. Dengan begitu, administrator dapat masuk ke AG yang terkandung dan mengatur konfigurasi lainnya.

Jika Anda membuat pengguna atau konfigurasi lokal dalam instans Anda, mereka tidak muncul secara otomatis saat Anda membuat database sistem terkontain, dan mereka tidak terlihat saat Anda tersambung ke AG terkontain. Setelah database pengguna bergabung ke AG yang terkandung, database tersebut akan segera tidak dapat diakses oleh pengguna ini. Anda perlu membuatnya kembali secara manual dalam database sistem yang terkandung dalam konteks AG yang terkandung, dengan menyambungkan langsung ke database atau dengan menggunakan titik akhir pendengar. Pengecualian untuk ini adalah bahwa semua login dalam peran sysadmin dalam instans induk disalin ke dalam database spesifik master AG yang terkontain baru selama pembuatan AG yang terkontain.

Nota

Karena database master terpisah untuk setiap grup ketersediaan yang terkandung, aktivitas pada tingkat server yang dilakukan dalam konteks AG yang terkandung hanya disimpan di dalam database sistem yang terkandung. Ini termasuk audit. Jika Anda mengaudit aktivitas tingkat server dengan Audit SQL Server, Anda harus membuat audit server yang sama dalam setiap AG yang terkandung.

Sinkronisasi Data Awal

Database sistem yang terkandung hanya mendukung penyemaian otomatis sebagai cara sinkronisasi data awal.

Di SQL Server 2022 (16.x) dan versi yang lebih lama, grup ketersediaan yang terkandung harus menggunakan seeding otomatis selama pembuatan. Saat menggunakan CREATE AVAILABILITY GROUP pernyataan atau wizard Grup Ketersediaan Baru di SQL Server Management Studio, sertakan hanya database pengguna yang mendukung fitur seeding otomatis. Untuk menambahkan database besar menggunakan seeding manual (JOIN ONLY), tunggu hingga AG yang terkandung dibuat.

Di SQL Server 2025 (17.x), database sistem yang terkandung selalu menggunakan seeding otomatis, bahkan jika CREATE AVAILABILITY GROUP pernyataan menentukan seeding manual. Anda dapat mengatur mode penyemaian ke manual untuk membuat kelompok ketersediaan yang terbatas, dan kemudian menambahkan database pengguna menggunakan metode sinkronisasi selain penyemaian otomatis.

Memulihkan database sistem yang terkurung

Untuk memulihkan cadangan database sistem yang terdapat, ikutilah langkah berikut:

  1. Hilangkan AG yang terkandung.

  2. Pulihkan database yang terkandung master dan msdb pada replika utama asli AG yang terkandung.

  3. Hapus database master dan msdb dari replika sekunder.

  4. Pada replika utama, buat ulang Grup Ketersediaan (AG) menggunakan nama dan node asli, dengan sintaks WITH (CONTAINED, REUSE_SYSTEM_DATABASES) dan SEEDING_MODE = AUTOMATIC.

Ketika membuat ulang grup ketersediaan yang terkandung, jangan sertakan database sistem yang terkandung dalam perintah CREATE AVAILABILITY GROUP. SQL Server mendeteksinya secara otomatis ketika REUSE_SYSTEM_DATABASES ditentukan. Di SQL Server 2022 (16.x) dan versi yang lebih lama, hanya menyertakan database pengguna kecil yang mendukung penyemaian otomatis. Tambahkan database besar secara terpisah setelah AG yang terkandung dibuat, menggunakan JOIN ONLY.

Pekerjaan grup ketersediaan terbatas

Tugas yang termasuk dalam grup ketersediaan terkontrol hanya berjalan pada replika utama. Mereka tidak beroperasi pada replika sekunder.

Sambungkan (lingkungan terisolasi)

Penting untuk membedakan antara menyambungkan ke instance dan menyambungkan ke AG yang terkandung. Satu-satunya cara untuk mengakses lingkungan AG yang terkandung adalah dengan menyambungkan ke pendengar AG atau ke database yang ada di dalam AG tersebut.

"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=MyContainedDatabase;
Server=MyServer;"

Di mana MyContainedDatabase adalah database dalam AG terkandung yang ingin Anda berinteraksi.

Ini berarti Anda harus membuat listener untuk AG yang terkandung agar dapat menggunakan AG yang terkandung secara efektif. Jika Anda terhubung ke salah satu instans yang menghosting AG yang terkandung daripada langsung ke AG yang terkandung melalui listener, Anda berada di lingkungan instans, dan bukan AG yang terkandung.

Misalnya, jika grup ketersediaan MyContainedAG Anda dihosting di server SERVER\MSSQLSERVER, dan alih-alih menyambungkan ke pendengar MyContainedAG_Listener, Anda terhubung ke instans menggunakan SERVER\MSSQLSERVER, Anda berada di lingkungan instans, dan bukan di lingkungan MyContainedAG. Ini berarti Anda tunduk pada konten (pengguna, izin, pekerjaan, dll.) yang ditemukan dalam database sistem instans. Untuk mengakses konten yang ada dalam database sistem dari AG terkontainer, sambungkan ke pendengar AG terkontainer (misalnya, MyContainedAG_Listener) sebagai gantinya. Saat Anda terhubung ke instans melalui pendengar AG bawaan, ketika Anda berinteraksi dengan master, Anda sebenarnya dialihkan ke database bawaan master (contohnya, MyContainedAG_master).

Pengalihan baca saja dan grup ketersediaan terisolasi

Jika Anda mengonfigurasi perutean baca-saja untuk mengalihkan koneksi dengan niat baca ke replika sekunder (lihat Mengonfigurasi perutean baca-saja untuk grup ketersediaan Always On) dan Anda ingin terhubung menggunakan login yang dibuat hanya di AG terkonten, ada beberapa pertimbangan tambahan:

  • Anda harus menentukan database yang merupakan bagian dari AG yang terkandung dalam string koneksi
  • Pengguna yang ditentukan dalam string koneksi harus memiliki izin untuk mengakses database dalam AG yang terkandung.

Misalnya dalam string koneksi berikut, di mana AdventureWorks adalah database dalam AG terkandung yang memiliki MyContainedListener, dan di mana MyUser adalah pengguna yang ditentukan dalam AG yang terkandung dan tidak ada instans yang berpartisipasi:

"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=AdventureWorks;
Server=MyContainedListener;
ApplicationIntent=ReadOnly"

String koneksi ini akan membuat Anda terhubung ke sekunder yang dapat dibaca yang merupakan bagian dari konfigurasi Perutean ReadOnly, dan Anda akan berada dalam konteks AG yang terkandung.

Perbedaan antara menyambungkan ke instans dan menyambungkan ke grup ketersediaan yang terkandung

  • Saat tersambung ke AG yang terbatas, pengguna hanya melihat database di AG yang terbatas, ditambah tempdb.
  • Pada tingkat instans, AG master dan msdb nama yang terkandung adalah [contained AG]_master, dan [contained AG]_msdb. Di dalam AG yang terkandung, namanya adalah master dan msdb.
  • ID database untuk AG master yang terkandung adalah 1 dari dalam AG itu sendiri, tetapi berbeda saat terhubung ke instans.
  • Meskipun pengguna tidak melihat database di luar AG yang terkandung di sys.databases ketika tersambung dalam koneksi AG yang terkandung, mereka dapat mengakses database tersebut dengan nama tiga bagian, atau melalui perintah USE.
  • Konfigurasi server melalui sp_configure dapat dibaca dari koneksi AG yang terkandung tetapi hanya dapat ditulis dari tingkat instans.
  • Dari koneksi AG yang terkandung, sysadmin dapat melakukan operasi tingkat instans, seperti mematikan SQL Server.
  • Sebagian besar tingkat database, tingkat titik akhir, atau operasi tingkat AG hanya dapat dilakukan dari koneksi instans, bukan koneksi AG yang terkandung.

Interaksi dengan fitur lain

Ada pertimbangan tambahan saat menggunakan fitur tertentu dengan AG yang terisolasi, dan ada beberapa fitur yang saat ini tidak didukung.

Cadangkan

Prosedur untuk mencadangkan database dalam Availability Group yang dibatasi sama seperti prosedur pencadangan untuk database pengguna mana pun. Ini berlaku untuk database pengguna AG yang terkandung serta database sistem AG.

Jika lokasi cadangan lokal, file cadangan ditempatkan di server yang menjalankan pekerjaan pencadangan. Ini berarti file cadangan Anda mungkin berada di lokasi yang berbeda.

Jika lokasi cadangan berada di sumber daya jaringan, semua server yang meng-host replika memerlukan akses ke sumber daya tersebut.

Grup ketersediaan terdistribusi

Grup ketersediaan terdistribusi adalah jenis grup ketersediaan khusus yang mencakup dua grup ketersediaan yang mendasar. Saat Anda mengonfigurasi grup ketersediaan terdistribusi, perubahan yang dilakukan pada primer global (yang merupakan replika utama AG pertama Anda) kemudian direplikasi ke replika utama AG kedua Anda, yang dikenal sebagai penerus.

Dimulai dengan SQL Server 2025 (17.x), Anda dapat mengonfigurasi grup ketersediaan terdistribusi antara dua AG yang terkandung. Karena AG yang terkontrol bergantung pada database sistem yang terkontrol master dan msdb, untuk membuat grup ketersediaan terdistribusi, AG kedua (forwarder) harus memiliki database sistem AG yang terkontrol yang sama dengan AG utama global.

Jika Anda ingin menggunakan AG yang terkandung sebagai pengirim dalam grup ketersediaan terdistribusi, Anda harus membuat AG yang terkandung dengan menggunakan AUTOSEEDING_SYSTEM_DATABASES klausul pada opsi WITH | CONTAINED dari pernyataan CREATE AVAILABILITY GROUP. Klausul AUTOSEEDING_SYSTEM_DATABASES ini memberi tahu SQL Server untuk melewati pembuatan database sistem AG yang tercakup sendiri, dan sebagai gantinya menyediakan database sistem AG yang tercakup dari primer global.

Gubernur sumber daya

Pada SQL Server 2022 (16.x) sebelum Pembaruan Kumulatif 18, dan pada versi-versi SQL Server yang lebih lama, konfigurasi atau penggunaan Resource Governor pada koneksi grup ketersediaan tertutup tidak didukung.

Dimulai dengan SQL Server 2022 (16.x) Pembaruan Kumulatif 18, jika Anda mengonfigurasi pengatur sumber daya pada koneksi instans, konsumsi sumber daya pada koneksi instans atau koneksi grup ketersediaan yang terkandung akan diatur seperti yang diharapkan. Jika Anda mencoba mengonfigurasi Resource Governor pada koneksi Contained Availability Group, Anda akan mendapatkan pesan kesalahan.

Pengelola sumber daya bekerja di tingkat instans Mesin Basis Data. Konfigurasi pengelola sumber daya pada tingkat instansi tidak berlaku pada replika ketersediaan. Anda harus mengonfigurasi pengelola sumber daya pada setiap instans yang menghosting replika ketersediaan.

Petunjuk / Saran

Kami menyarankan agar Anda menggunakan konfigurasi gubernur sumber daya yang sama untuk semua instans Mesin Database yang menghosting replika ketersediaan untuk memastikan perilaku yang konsisten saat kegagalan grup ketersediaan terjadi.

Untuk informasi selengkapnya, lihat Resource governor dan contoh dan praktik terbaik konfigurasi Resource governor.

Mengubah pengambilan data

Change data capture (CDC) diimplementasikan sebagai tugas SQL Agent, oleh karena itu, Agen SQL harus berjalan pada semua instans dengan replika dalam AG yang tercakup.

Untuk menggunakan penangkapan data perubahan dengan AG yang direkayasa, sambungkan ke pendengar AG saat Anda mengonfigurasi CDC sehingga metadata CDC dikonfigurasi menggunakan basis data sistem yang direkayasa.

Pengiriman catatan transaksi

Pengiriman log dapat dikonfigurasi jika database sumber berada di AG terlingkup. Namun, target pengiriman log tidak didukung dalam AG yang terisolasi. Selain itu, ada langkah tambahan untuk memodifikasi pekerjaan pengiriman log setelah CDC dikonfigurasi.

Untuk mengonfigurasi pengiriman log dengan AG yang terkandung, ikuti langkah-langkah berikut:

  1. Sambungkan ke pendengar AG yang ada di dalam.
  2. Konfigurasikan pengiriman log seperti biasa.
  3. Setelah pekerjaan pengiriman log dikonfigurasi, ubah pengaturan pekerjaan untuk terhubung ke listener AG yang sudah ada sebelum melakukan pencadangan.

Transparent Data Encryption (TDE)

Untuk menggunakan enkripsi data transparan (TDE) dengan database dalam AG yang terkandung, instal Database Master Key (DMK) secara manual ke database yang terkandung master dalam AG yang terkandung.

Database yang menggunakan TDE mengandalkan sertifikat dalam master database untuk mendekripsi Kunci Enkripsi Database (DEK). Tanpa sertifikat itu, SQL Server tidak dapat mendekripsi database yang dienkripsi dengan TDE atau membuatnya online. Dalam AG terkurung, SQL Server memeriksa kedua master basis data untuk DMK, basis data master untuk instance, dan basis data kontainer master di dalam AG terkurung untuk mendekripsi basis data. Jika tidak dapat menemukan sertifikat di salah satu lokasi, maka SQL Server tidak dapat membuat database online.

Untuk mentransfer DMK dari master database instans, ke database yang terkandung master , lihat Memindahkan database yang dilindungi TDE ke SQL Server lain, terutama berfokus pada bagian di mana DMK ditransfer dari server lama ke yang baru.

Nota

Mengenkripsi database apa pun pada instans tempdb SQL Server juga mengenkripsi database sistem.

Paket SSIS & rencana pemeliharaan

Menggunakan paket SSIS, termasuk rencana pemeliharaan, tidak didukung dengan grup ketersediaan yang terkandung.

Tidak didukung

Saat ini, fitur-fitur SQL Server berikut tidak didukung dengan Availability Group (AG) yang terkontainer:

  • Replikasi SQL Server dari jenis apa pun (transaksional, penggabungan, rekam jepret, dan sebagainya).
  • Pengiriman log tempat database target berada di AG yang terkandung. Dukungan diberikan untuk pengiriman log dengan database sumber di dalam AG yang terkandung.

Perubahan DDL

Satu-satunya perubahan DDL ada dalam alur kerja CREATE AVAILABILITY GROUP . Ada WITH klausa dengan dua opsi:

<with_option_spec> ::=
CONTAINED [REUSE_SYSTEM_DATABASES | AUTOSEEDING_SYSTEM_DATABASES ]

TERKANDUNG

Ini menentukan bahwa AG yang dibuat harus berupa AG terkontrol.

GUNAKAN_ULANG_DATABASE_SISTEM

Opsi REUSE_SYSTEM_DATABASES ini hanya berlaku untuk AG tertentu, dan menentukan bahwa AG yang baru dibuat harus menggunakan kembali database sistem tertentu yang sudah ada untuk AG tertentu sebelumnya dengan nama yang sama. Misalnya, jika Anda memiliki AG yang terkandung dengan nama MyContainedAG, dan ingin menghilangkan dan membuatnya kembali, Anda dapat menggunakan opsi ini untuk menggunakan kembali konten database sistem asli yang terkandung. Saat menggunakan opsi ini, jangan tentukan nama database sistem. SQL Server secara otomatis mendeteksinya.

AUTOSEEDING_SYSTEM_DATABASES

Berlaku untuk: SQL Server 2025 (17.x) dan yang lebih baru

Jika Anda ingin menggunakan AG yang terkandung sebagai pembawa pesan dalam grup ketersediaan terdistribusi, Anda harus menggunakan opsi AUTOSEEDING_SYSTEM_DATABASES saat membuat AG yang terkandung. Opsi ini menginstruksikan SQL Server untuk tidak membuat database sistem AG tersendiri, dan sebaliknya menyalin database sistem AG tersebut dari primary global.

Perubahan pada Departemen Kendaraan Bermotor (DMV)

Ada dua penambahan DMV yang terkait dengan AG yang terkandung:

  • DMV sys.dm_exec_sessions memiliki kolom tambahan: contained_availability_group_id
  • Tampilan sys.availability_groups katalog memiliki kolom yang ditambahkan: is_contained