Bagikan melalui


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 dan izin BUAT server GRUP KETERSEDIAAN, UBAH izin GRUP KETERSEDIAAN APA PUN, atau izin SERVER KONTROL.
Untuk mengubah replika ketersediaan Memerlukan izin UBAH GRUP KETERSEDIAAN pada grup ketersediaan, izin GRUP KETERSEDIAAN KONTROL, izin UBAH GRUP KETERSEDIAAN APA PUN, atau izin SERVER KONTROL.

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

      Baca-niat saja
      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 drop 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 tempat properti koneksi Niat Aplikasi diatur ke ReadOnly tidak diizinkan. Ini dapat membantu mencegah pelanggan menyambungkan beban kerja baca-niat ke replika utama secara tidak sengaja. Untuk informasi selengkapnya tentang properti koneksi Niat Aplikasi, lihat Menggunakan Kata Kunci String Koneksi dengan Klien Asli SQL Server.

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 pernyataan CREATE AVAILABILITY GROUPTransact-SQL. Jika Anda menambahkan atau memodifikasi replika grup ketersediaan yang ada, gunakan pernyataan ALTER AVAILABILITY GROUPTransact-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 | SEMUA } )

      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 | SEMUA } )

    mana

    BACA_TULIS
    Koneksi tempat properti koneksi Niat Aplikasi diatur ke ReadOnly tidak diizinkan. Ketika properti Niat Aplikasi diatur ke ReadWrite atau properti koneksi Niat Aplikasi tidak diatur, koneksi diizinkan. Untuk informasi selengkapnya tentang properti koneksi Niat Aplikasi, lihat Menggunakan Kata Kunci String Koneksi dengan Klien Asli SQL Server.

    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 tempat properti koneksi Niat Aplikasi diatur ke ReadOnly tidak diizinkan. Ketika properti Niat Aplikasi diatur ke ReadWrite atau properti koneksi Niat Aplikasi tidak diatur, koneksi diizinkan. Untuk informasi selengkapnya tentang properti koneksi Niat Aplikasi, lihat Menggunakan Kata Kunci String Koneksi dengan Klien Asli SQL Server.

      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 menentukan akses baca-saja ke replika sekunder apa 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 pekerjaan 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 Pembaruan 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

Konten Terkait

Lihat Juga

Gambaran Umum Grup Ketersediaan AlwaysOn (SQL Server)
Sekunder Aktif: Replika Sekunder yang Dapat Dibaca (Grup Ketersediaan AlwaysOn)
Tentang Akses Koneksi Klien ke Replika Ketersediaan (SQL Server)