Aracılığıyla paylaş


Çoğaltma aboneleri ve Always On kullanılabilirlik grupları (SQL Server)

Şunlar için geçerlidir: SQL Server

Always On kullanılabilirlik grubu (AG), çoğaltma abonesi rolündeki bir veritabanını içeren başka bir sunucuya devredildiğinde, çoğaltma aboneliği başarısız olabilir. İşlemsel çoğaltma için gönderen aboneler, abonelik AG dinleyici adı kullanılarak oluşturulduysa, yük devretme sonrasında dağıtım etmeni otomatik olarak çoğaltmaya devam eder. abonelik, AG dinleyici adı kullanılarak oluşturulduysa ve özgün abone sunucusu çalışır durumdaysa, işlem çoğaltması çekme aboneleri için dağıtım aracısı, yük devretme sonrası otomatik olarak çoğaltmaya devam eder. Bunun nedeni dağıtım aracısı işlerinin yalnızca özgün abonede (AG'nin birincil çoğaltması) oluşturulmasıdır. Birleştirme aboneleri için çoğaltma yöneticisinin aboneliği yeniden oluşturarak aboneyi el ile yeniden yapılandırması gerekir.

Desteklenenler

SQL Server çoğaltması yayımcının otomatik yük devretmesini ve işlem abonelerinin otomatik yük devretmesini destekler. Birleştirme aboneleri bir AG'nin parçası olabilir. Ancak, yük devretmeden sonra yeni aboneyi yapılandırmak için elle işlemler gerekir. AG'ler WebSync ve SQL Server Compact senaryolarıyla birleştirilemiyor.

Kullanılabilirlik grubunda işlemsel abonelik oluşturma

İşlem çoğaltması için abone AG'sini yapılandırmak ve yük devretmek için aşağıdaki adımları kullanın:

  1. Aboneliği oluşturmadan önce abone veritabanını uygun AG'ye ekleyin.

  2. Abonenin AG dinleyicisini AG'nin tüm düğümlerine bağlı sunucu olarak ekleyin. Bu adım, tüm olası yük devretme iş ortaklarının farkında olmasını ve dinleyiciye bağlanabilmesini sağlar.

  3. İşlem çoğaltma gönderimi aboneliği oluşturma bölümündeki betiği kullanarak, AG dinleyicisinin adını kullanarak abonenin aboneliğini oluşturun. Yük devretme sonrasında dinleyici adı her zaman geçerliliğini korur, oysa abonenin gerçek sunucu ismi, yeni birincil sunucu olan gerçek düğüme bağlıdır.

    Uyarı

    Aboneliği oluşturmak için bir Transact-SQL betiği kullanmanız gerekir. Management Studio'yu kullanamazsınız.

  4. Çekme aboneliği oluşturmak için:

    1. İşlem çoğaltması çekme aboneliği oluşturma bölümündeki örnek betiği kullanarak abonenin AG dinleyicisinin adını kullanarak aboneliği oluşturun.

    2. Yük devretme işleminden sonra, sp_addpullsubscription_agent saklı yordamını kullanarak yeni birincil çoğaltmada dağıtım aracısı işini oluşturun.

Erişilebilirlik Grubu (AG) içinde bir abonelik veritabanıyla çekme aboneliği oluşturduğunuzda, her yük devretme işleminden sonra eski birincil çoğaltmada dağıtım aracı işini devre dışı bırakmanız ve yeni birincil çoğaltmada işini etkinleştirmeniz gerekir.

İşlem çoğaltma anında iletme aboneliği oluşturma

-- commands to execute at the publisher, in the publisher database:
USE [<publisher database name>];
GO

EXEC sp_addsubscription @publication = N'<publication name>',
    @subscriber = N'<AG listener name>',
    @destination_db = N'<subscriber database name>',
    @subscription_type = N'Push',
    @sync_type = N'automatic',
    @article = N'all',
    @update_mode = N'read only',
    @subscriber_type = 0;
GO

EXEC sp_addpushsubscription_agent @publication = N'<publication name>',
    @subscriber = N'<AG listener name>',
    @subscriber_db = N'<subscriber database name>',
    @job_login = NULL,
    @job_password = NULL,
    @subscriber_security_mode = 1;
GO

İşlemsel çoğaltma çekme yöntemi aboneliği oluşturma

-- commands to execute at the subscriber, in the subscriber database:
USE [<subscriber database name>];
GO

EXEC sp_addpullsubscription @publisher = N'<publisher name>',
    @publisher_db = N'<publisher database name>',
    @publication = N'<publication name>',
    @subscription_type = N'pull';
GO

EXEC sp_addpullsubscription_agent @publisher = N'<publisher name>',
    @subscriber = N'<AG listener name or alias>',
    @distributor = N'<distributor AG listener name>', -- this parameter should only be used if the distribution database is part of an AG.
    @publisher_db = N'<publisher database name>',
    @publication = N'<publication name>',
    @job_login = NULL,
    @job_password = NULL,
    @subscriber_security_mode = 1;
GO

Kullanılabilirlik grubu dinleyici gereksinimi

AG'nin parçası olan bir abone için sp_addpullsubscription_agent çalıştırdığınızda @subscriber parametre değerini AG dinleyici adı olarak saklı yordama geçirmeniz gerekir. CU 16'nın öncesinde SQL Server 2016 (13.x) ve önceki sürümleri veya SQL Server 2017 (14.x) çalıştırıyorsanız, saklı yordam AG dinleyici adına başvurmaz. Komutun yürütüldiği abone sunucusu adıyla aboneliği oluşturur. Bu sorunu çözmek için @subscriber parametresini AG dinleyici adı değeriyle Çoğaltma Dağıtım Aracısı'nda el ile güncelleyin.

Abone AG dinleyicisi varsayılan olmayan bir bağlantı noktası kullanıyorsa, parametresinde AG dinleyicisi adının bir parçası olarak bağlantı noktası numarası sağlanması Windows'da @subscriber desteklenmez. Geçici bir çözüm olarak, Alias (SQL Server Configuration Manager) veya SQL Server İstemci Ağ Yardımcı Programı aracı (cliconfg) kullanarak SQL Server 2022 (16.x) ve sonraki sürümler için yayımcı, dağıtımcı ve abone sunucusundaki dinleyici ve bağlantı noktası için bir alias oluşturabilir ve bu alias'ı @subscriber parametre değeri olarak geçirebilirsiniz.

Abonenin kullanılabilirlik grubu başarısız olduktan sonra birleştirme aracılarını devam ettirme

Birleştirme çoğaltma işlemi için, çoğaltma yöneticisinin aboneyi aşağıdaki adımlarla manuel olarak yeniden yapılandırması gerekir.

  1. Abonenin eski aboneliğini kaldırmak için komutunu yürütür sp_subscription_cleanup . Bu eylemi yeni birincil çoğaltmada (eski adı ikincil çoğaltma) gerçekleştirin.

  2. Yeni bir anlık görüntüden başlayarak yeni bir abonelik oluşturarak mevcut aboneliği yeniden oluşturun.

Uyarı

Bu işlem, birleştirme replikasyonu aboneleri için pratik değildir. Ancak, birleştirme çoğaltması için başlıca senaryo, abonede AG kullanmayan internete bağlı olmayan kullanıcılardır (masaüstü bilgisayarlar, dizüstü bilgisayarlar, ahize cihazları).