Mengonfigurasi akses baca-saja pada replika sekunder grup ketersediaan AlwaysOn

Berlaku untuk:SQL Server

Secara default, akses baca-tulis dan baca-niat diizinkan ke replika utama dan tidak ada koneksi yang diizinkan untuk replika sekunder dari grup ketersediaan AlwaysOn. Topik ini menjelaskan cara mengonfigurasi akses koneksi pada replika ketersediaan grup ketersediaan AlwaysOn di SQL Server dengan menggunakan SQL Server Management Studio, Transact-SQL, atau PowerShell.

Untuk informasi tentang implikasi mengaktifkan akses baca-saja untuk replika sekunder dan untuk pengenalan akses koneksi, lihat Tentang Akses Koneksi Klien ke Replika Ketersediaan (SQL Server) dan Sekunder Aktif: Replika Sekunder yang Dapat Dibaca (Grup Ketersediaan AlwaysOn).

Prasyarat dan Pembatasan

  • Untuk mengonfigurasi akses koneksi yang berbeda, Anda harus terhubung ke instans server yang menghosting replika utama.

Izin

Tugas Izin
Untuk mengonfigurasi replika saat membuat grup ketersediaan Memerlukan keanggotaan dalam peran server tetap sysadmin serta salah satu dari izin server CREATE AVAILABILITY GROUP, izin ALTER ANY AVAILABILITY GROUP, atau izin CONTROL SERVER.
Memodifikasi replika ketersediaan Memerlukan izin ALTER AVAILABILITY GROUP pada grup ketersediaan, izin CONTROL AVAILABILITY GROUP, izin ALTER ANY AVAILABILITY GROUP, atau izin CONTROL SERVER.

Menggunakan SQL Server Management Studio

Untuk mengonfigurasi akses pada replika ketersediaan

  1. Di Object Explorer, sambungkan ke instans server yang menghosting replika utama, dan memperluas pohon server.

  2. Perluas node Ketersediaan Tinggi Always On dan node Grup Ketersediaan.

  3. Klik grup ketersediaan yang replikanya ingin Anda ubah.

  4. Klik kanan replika ketersediaan, dan klik Properti.

  5. Dalam kotak dialog Properti Replika Ketersediaan, Anda dapat mengubah akses koneksi untuk peran utama dan peran sekunder, sebagai berikut:

    • Untuk peran sekunder, pilih nilai baru dari daftar drop sekunder yang dapat dibaca, sebagai berikut:

      Tidak
      Tidak ada koneksi pengguna yang diizinkan ke database sekunder dari replika ini. Mereka tidak tersedia untuk akses baca. Ini adalah pengaturan default.

      Hanya untuk baca
      Hanya koneksi baca-saja yang diizinkan ke database sekunder dari replika ini. Semua database sekunder tersedia untuk akses baca.

      Ya
      Semua koneksi diizinkan ke database sekunder replika ini, tetapi hanya untuk akses baca. Semua database sekunder tersedia untuk akses baca.

    • Untuk peran utama, pilih nilai baru dari daftar tarik-turun Koneksi dalam peran utama, sebagai berikut:

      Perbolehkan semua koneksi
      Semua koneksi diizinkan ke database di replika utama. Ini adalah pengaturan default.

      Perbolehkan koneksi baca/tulis
      Ketika properti Niat Aplikasi diatur ke ReadWrite atau properti koneksi Niat Aplikasi tidak diatur, koneksi diizinkan. Koneksi yang properti koneksi Application Intent-nya diatur ke ReadOnly tidak diizinkan. Ini dapat membantu mencegah pelanggan secara tidak sengaja menghubungkan beban kerja dengan maksud baca ke replika utama. Untuk informasi selengkapnya tentang properti koneksi Application Intent, lihat Menggunakan Kata Kunci String Koneksi dengan SQL Server Native Client.

Menggunakan T-SQL

Untuk mengonfigurasi akses pada replika ketersediaan

Catatan

Untuk contoh prosedur ini, lihat Contoh (Transact-SQL), nanti di bagian ini.

  1. Sambungkan ke instans server yang menghosting replika utama.

  2. Jika Anda menentukan replika untuk grup ketersediaan baru, gunakan CREATE AVAILABILITY GROUP pernyataanTransact-SQL. Jika Anda menambahkan atau memodifikasi replika grup ketersediaan yang ada, gunakan ALTER AVAILABILITY GROUP pernyataanTransact-SQL.

    • Untuk mengonfigurasi akses koneksi untuk peran sekunder, dalam klausa ADD REPLICA atau MODIFY REPLICA WITH, tentukan opsi SECONDARY_ROLE, sebagai berikut:

      SECONDARY_ROLE ( ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL } )

      di mana,

      TIDAK
      Tidak ada koneksi langsung yang diizinkan ke database sekunder dari replika ini. Mereka tidak tersedia untuk akses baca. Ini adalah pengaturan default.

      READ_ONLY
      Hanya koneksi baca-saja yang diizinkan ke database sekunder dari replika ini. Semua database sekunder tersedia untuk akses baca.

      SEMUA
      Semua koneksi diizinkan ke database sekunder replika ini, tetapi hanya untuk akses baca. Semua database sekunder tersedia untuk akses baca.

  3. Untuk mengonfigurasi akses koneksi untuk peran utama, dalam klausa ADD REPLICA atau MODIFY REPLICA WITH, tentukan opsi PRIMARY_ROLE, sebagai berikut:

    PRIMARY_ROLE ( ALLOW_CONNECTIONS = { READ_WRITE | ALL } )

    di mana,

    BACA_TULIS
    Koneksi dengan properti koneksi Application Intent yang diatur ke ReadOnly tidak diperbolehkan. Ketika properti Niat Aplikasi diatur ke ReadWrite atau properti koneksi Niat Aplikasi tidak diatur, koneksi diizinkan. Untuk informasi selengkapnya tentang properti koneksi Application Intent, lihat Menggunakan Kata Kunci String Koneksi dengan SQL Server Native Client.

    SEMUA
    Semua koneksi diizinkan ke database di replika utama. Ini adalah pengaturan default.

Contoh (Transact-SQL)

Contoh berikut menambahkan replika sekunder ke grup ketersediaan bernama AG2. Instans server mandiri, COMPUTER03\HADR_INSTANCE, ditentukan untuk menghosting replika ketersediaan baru. Replika ini dikonfigurasi untuk hanya mengizinkan koneksi baca-tulis untuk peran utama dan hanya mengizinkan koneksi niat baca untuk peran sekunder.

ALTER AVAILABILITY GROUP AG2   
   ADD REPLICA ON   
      'COMPUTER03\HADR_INSTANCE' WITH   
         (  
         ENDPOINT_URL = 'TCP://COMPUTER03:7022',  
         PRIMARY_ROLE ( ALLOW_CONNECTIONS = READ_WRITE ),  
         SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY )  
         );   
GO  

Menggunakan PowerShell

Untuk mengonfigurasi akses pada replika ketersediaan

Catatan

Untuk contoh kode, lihat Contoh (PowerShell), nanti di bagian ini.

  1. Ubah direktori (cd) ke instans server yang menghosting replika utama.

  2. Saat menambahkan replika ketersediaan ke grup ketersediaan, gunakan cmdlet New-SqlAvailabilityReplica . Saat memodifikasi replika ketersediaan yang ada, gunakan cmdlet Set-SqlAvailabilityReplica . Parameter yang relevan adalah sebagai berikut:

    • Untuk mengonfigurasi akses koneksi untuk peran sekunder, tentukan parameter secondary_role_keyword ConnectionModeInSecondaryRole, di mana secondary_role_keyword sama dengan salah satu nilai berikut:

      AllowNoConnections
      Tidak ada koneksi langsung yang diizinkan ke database di replika sekunder dan database tidak tersedia untuk akses baca. Ini adalah pengaturan default.

      AllowReadIntentConnectionsOnly
      Koneksi hanya diperbolehkan ke database di replika sekunder tempat properti Niat Aplikasi diatur ke ReadOnly. Untuk informasi selengkapnya tentang properti ini, lihat Menggunakan Kata Kunci String Koneksi dengan SQL Server Native Client.

      AllowAllConnections
      Semua koneksi diizinkan ke database di replika sekunder untuk akses baca-saja.

    • Untuk mengonfigurasi akses koneksi untuk peran utama, tentukan primary_role_keyword ConnectionModeInPrimaryRole, di mana primary_role_keyword sama dengan salah satu nilai berikut:

      AllowReadWriteConnections
      Koneksi yang properti koneksi Application Intent-nya diatur ke ReadOnly tidak diizinkan. Ketika properti Application Intent diatur ke ReadWrite atau properti koneksi Application Intent tidak diatur, koneksi diperbolehkan. Untuk informasi selengkapnya tentang properti koneksi Application Intent, lihat Menggunakan Kata Kunci String Koneksi dengan SQL Server Native Client.

      AllowAllConnections
      Semua koneksi diizinkan ke database di replika utama. Ini adalah pengaturan default.

    Catatan

    Untuk melihat sintaks cmdlet, gunakan cmdlet Get-Help di lingkungan PowerShell SQL Server. Untuk informasi selengkapnya, lihat Mendapatkan Bantuan SQL Server PowerShell.

Untuk menyiapkan dan menggunakan penyedia PowerShell SQL Server

Contoh (PowerShell)

Contoh berikut, mengatur parameter ConnectionModeInSecondaryRole dan ConnectionModeInPrimaryRole ke AllowAllConnections.

Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg  
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"  
Set-SqlAvailabilityReplica -ConnectionModeInSecondaryRole "AllowAllConnections" `   
-InputObject $primaryReplica  
Set-SqlAvailabilityReplica -ConnectionModeInPrimaryRole "AllowAllConnections" `   
-InputObject $primaryReplica  
  

Tindak Lanjut: Setelah Mengonfigurasi Akses Baca-Saja untuk Replika Ketersediaan

Akses baca-saja ke replika sekunder yang dapat dibaca

  • Saat menggunakan utilitas bcp atau utilitas sqlcmd, Anda dapat menetapkan akses baca-saja ke replika sekunder mana pun yang diaktifkan untuk akses baca-saja dengan menentukan sakelar -K ReadOnly.

  • Untuk memungkinkan aplikasi klien terhubung ke replika sekunder yang dapat dibaca:

Prasyarat Tautan
Pastikan bahwa grup ketersediaan memiliki pendengar. Membuat atau Mengonfigurasi Listener Grup Ketersediaan (SQL Server)
Konfigurasikan perutean baca-saja untuk grup ketersediaan. Mengonfigurasi Perutean Baca-Saja untuk Grup Ketersediaan (SQL Server)

Faktor-faktor yang mungkin memengaruhi pemicu dan tugas setelah failover

Jika Anda memiliki pemicu dan pekerjaan yang akan gagal saat berjalan pada database sekunder yang tidak dapat dibaca atau pada database sekunder yang dapat dibaca, Anda perlu membuat skrip pemicu dan pekerjaan untuk memeriksa replika tertentu untuk menentukan apakah database adalah database utama atau merupakan database sekunder yang dapat dibaca. Untuk mendapatkan informasi ini, gunakan fungsi DATABASEPROPERTYEX untuk mengembalikan properti Kemampuan Pembaruan dari database. Untuk mengidentifikasi database baca-saja, tentukan READ_ONLY sebagai nilai, sebagai berikut:

DATABASEPROPERTYEX([db name],'UpdateAbility') = N'READ_ONLY'  

Untuk mengidentifikasi database baca-tulis, tentukan READ_WRITE sebagai nilai.

Tugas Terkait