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 dalam simpul, atau dalam kesehatan SQL Server pada simpul yang menghosting salinan utama, grup database bergerak sebagai unit ke simpul replika lain di AG. Semua database pengguna tetap disinkronkan di semua replika AG, baik dalam mode sinkron atau asinkron.

Arsitektur ini berfungsi dengan baik untuk aplikasi yang hanya berinteraksi dengan sekumpulan database pengguna tersebut. Namun, tantangan muncul ketika aplikasi juga mengandalkan objek seperti pengguna, login, izin, pekerjaan agen, dan objek lain yang disimpan di salah satu database sistem (master atau msdb). Untuk memastikan bahwa aplikasi berfungsi dengan lancar dan dapat diprediksi, admin harus memastikan bahwa setiap perubahan pada objek ini diduplikasi di semua instans replika di AG. Jika Anda menambahkan instans baru ke AG, Anda dapat secara otomatis atau manual menyiapkan database dengan proses yang mudah. Namun, Anda harus mengonfigurasi ulang semua kustomisasi database sistem pada instans baru agar sesuai dengan replika lainnya.

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 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.

Konsep ini berbeda dari database yang terkandung, yang menggunakan mekanisme yang berbeda untuk akun pengguna, dengan 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 yang terkandung, Anda membuat pengguna, login, izin, dan sebagainya, di tingkat AG. Objek-objek ini secara otomatis konsisten di seluruh replika dalam AG, serta konsisten di seluruh database yang terdapat dalam AG tersebut. Konsistensi 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

Ketika Anda bekerja dengan AG yang terkandung, pertimbangkan beberapa perbedaan praktis. Perbedaan ini termasuk pembuatan database sistem yang terkandung dan memaksa koneksi pada tingkat AG yang terkandung alih-alih menyambungkan 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 diinisialisasi pada replika yang baru, dan pembaruan direplikasikan pada database ini sama seperti database lain dalam suatu grup ketersediaan. Saat Anda menambahkan objek seperti login atau tugas agen saat terhubung ke AG yang terkandung, Anda tetap dapat melihat tugas agen tersebut, dan dapat mengautentikasi dengan menggunakan login yang dibuat dalam AG yang terkandung ketika AG yang terkandung dialihkan ke instans lain.

Penting

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

Database sistem dalam AG yang baru dibuat bukan merupakan salinan dari instans tempat Anda menjalankan perintah CREATE AVAILABILITY GROUP. Templat awalnya kosong tanpa data apa pun. Segera setelah pembuatan, proses tersebut menyalin akun admin pada instans yang membuat AG ke dalam AG master yang terkandung. Dengan begitu, administrator dapat masuk ke AG yang terkandung dan menyiapkan 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 dengan AG yang dibatasi, pengguna ini segera kehilangan akses. 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 dari aturan ini adalah bahwa semua login dalam peran sysadmin di instans induk disalin ke dalam database khusus AG baru selama pembuatan AG terkontain.

Nota

master Karena database terpisah untuk setiap grup ketersediaan yang terkandung, aktivitas cakupan server yang dilakukan dalam konteks AG yang terkandung hanya bertahan dalam database sistem yang terkandung. Aturan 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 metode 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, hanya menyertakan database pengguna yang mendukung seeding otomatis. Untuk menambahkan database besar dengan 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 pencangkokan ke manual untuk membuat AG yang terisolasi, dan kemudian menambahkan database pengguna dengan menggunakan metode sinkronisasi selain dari pencangkokan 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. Hilangkan database yang terkandung 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 saat Anda menentukan REUSE_SYSTEM_DATABASES. 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 berjalan 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.

Anda harus membuat listener untuk AG yang terkandung agar AG yang terkandung dapat digunakan 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. Anda tunduk pada konten (pengguna, izin, pekerjaan, dan sebagainya) 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 AlwaysOn) dan Anda ingin terhubung menggunakan login yang dibuat hanya di AG yang terkandung, ada pertimbangan lebih lanjut:

  • 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, AdventureWorks adalah database dalam AG yang terkandung yang memiliki MyContainedListener, dan MyUser merupakan pengguna yang ditentukan dalam AG yang terkandung dan tidak termasuk dalam instans yang berpartisipasi:

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

Contoh ini menghubungkan Anda ke sekunder yang dapat dibaca yang merupakan bagian dari konfigurasi Perutean ReadOnly, dan Anda 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

Pertimbangkan faktor lain saat menggunakan fitur tertentu dengan AG yang dibatasi. Beberapa fitur saat ini tidak didukung.

Cadangkan

Prosedur untuk mencadangkan database dalam AG yang dibatasi sama dengan prosedur pencadangan database pengguna apa pun. Pernyataan ini berlaku untuk database pengguna AG yang terkandung dan database sistem AG yang termasuk.

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

Jika Anda menggunakan sumber daya jaringan untuk lokasi cadangan, semua server yang menjadi host replika memerlukan akses ke sumber daya tersebut.

Memungkinkan pembuatan atau pemulihan database dalam sesi grup ketersediaan yang terkandung

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

Di SQL Server 2025 (17.x) Pembaruan Kumulatif (CU) 1, Anda dapat mengizinkan pembuatan dan pemulihan database langsung dalam sesi grup ketersediaan terkontain, melalui pendengar AG yang terkontain. Penyempurnaan ini menyederhanakan alur kerja untuk pengguna yang diberi peran yang sesuai, memungkinkan operasi yang mulus dalam lingkungan AG yang terkandung.

Hanya pengguna dengan peran dbcreator yang dapat membuat database dalam sesi AG yang terkandung. Hanya pengguna dengan peran db_owner atau sysadmin yang dapat memulihkan database.

Contoh berikut mengaktifkan fitur untuk sesi Anda, menggunakan kunci allow_cag_create_db konteks sesi dalam prosedur tersimpan sp_set_session_contex . Untuk menonaktifkannya, atur @value ke 0.

EXECUTE sp_set_session_context
    @key = N'allow_cag_create_db',
    @value = 1;

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

Berlaku untuk: SQL Server 2022 (16.x) CU 18 dan versi yang lebih baru.

Di SQL Server 2022 (16.x) sebelum Pembaruan Kumulatif (CU) 18, dan dalam versi SQL Server yang lebih lama, mengonfigurasi atau menggunakan pengelola sumber daya pada koneksi grup ketersediaan terkandung tidak didukung.

Di SQL Server 2022 (16.x) CU 18 dan versi yang lebih baru, jika Anda mengonfigurasi Resource Governor pada koneksi instans, konsumsi sumber daya pada koneksi instans atau koneksi grup ketersediaan yang terkontain 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

Anda harus 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 Gubernur sumber daya dan Tutorial: Contoh konfigurasi gubernur sumber daya dan praktik terbaik.

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

Anda dapat mengonfigurasi pengiriman log jika database sumber berada di AG yang terkandung. Namun, target pengiriman log tidak didukung dalam AG yang terisolasi. Selain itu, Anda perlu memodifikasi pekerjaan pengiriman log setelah mengonfigurasi CDC.

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 Anda mengonfigurasi pekerjaan pengiriman log, ubah pekerjaan untuk terhubung ke pendengar AG yang terkandung sebelum mengambil cadangan.

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, 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 dan rencana pemeliharaan

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

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.

Dukungan DDL

Dalam alur kerja CREATE AVAILABILITY GROUP , ada WITH klausa dengan beberapa opsi:

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

TERKANDUNG

Opsi ini menentukan bahwa AG yang Anda buat adalah AG yang tertutup.

GUNAKAN_ULANG_DATABASE_SISTEM

Opsi REUSE_SYSTEM_DATABASES ini hanya berlaku untuk AG (Availability Groups) yang terkontain. Ini menentukan bahwa AG baru harus menggunakan kembali database sistem terkandung yang ada dari AG sebelumnya dengan nama yang sama. Misalnya, jika Anda memiliki AG yang terkontainer bernama MyContainedAG, dan Anda ingin menghapus dan membuat ulang, Anda dapat menggunakan opsi ini untuk memanfaatkan kembali konten database sistem asli yang terkandung. Saat Anda menggunakan opsi ini, jangan tentukan nama database sistem. SQL Server secara otomatis mendeteksinya.

AUTOSEEDING_SYSTEM_DATABASES

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

Jika Anda ingin menggunakan AG yang terkandung sebagai penerus dalam grup ketersediaan terdistribusi, Anda harus memilih 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.

Dukungan objek sistem untuk grup ketersediaan yang terkandung

Dua tampilan sistem mencakup penambahan yang terkait dengan grup ketersediaan yang dibatasi.