SQL Server 2019'da işlem çoğaltma yenilenebilir aboneliklerini etkinleştirin

Sayfa oluşturma tarihi :

Giriş ve önlemler

Bu makale, SQL Server 2019'da çoğaltma için hazırlanmıştır. İçindeki işlevlerden biri "yenilenebilir abonelik" etkindir.

Bu özellik, SQL Server'ın önceki sürümlerinde varsayılan olarak etkinleştirilmiştir, ancak (muhtemelen) 2017'den beri devre dışı bırakılmıştır.

SQL Server'ın gelecekteki sürümleri bu özelliği kaldırabilir. Mevcut bir ortamı yükseltmek dışında, birleştirme çoğaltması vb. ile yeni yapı için değiştirmenizi öneririz.

referans

çevre

İki sunucu, bir sunucu ve iki SQL Server kullanın. Windows Server, yüklemeden hemen sonra hiçbir ek ayarın yapılmadığı bir durumdadır.

1. ünite (yayın tarafı)
  • Windows Server 2019 Standart Sürüm
  • SQL Server 2019 Developer Edition (Standard Edition veya üstü gereklidir)
  • SQL Server Management Studio 18.9.1
İkinci ünite (abone tarafı)
  • Windows Server 2019 Standart Sürüm
  • SQL Server 2019 Express Sürümü
  • SQL Server Management Studio 18.9.1

amaç

Birinci veya ikinci sunucu veritabanlarındaki tablo kayıtları güncelleştirilse bile Birbirlerinin sunucularındaki tablo kayıtlarının eşitlendiğinden emin olun.

Bu arada, yayın tarafındaki biri iyidir, ancak abone tarafında herhangi bir sayıda birim olabilir. Ayrıca, tek bir sunucuda birden çok SQL Server örneğiyle de çalışır.

SQL Server'ı yükleme

SQL Server'ı yüklemek bu İpuçlarının ana parçası değildir, bu yüzden ayrıntılara girmeyeceğim. Yalnızca çoğaltma ile ilgili olanlar listelenir.

Yayın tarafının yüklenmesi Standard Edition veya üstünü gerektirir. Bu İpuçları, Developer Edition'ı bir test ortamı olarak yükler.

Aboneler Express Edition ile sorun değil. Tabii ki, DB yapılandırmasına bağlı olarak diğer sürümler iyidir.

Özellik Seçimi için Veritabanı Altyapısı Hizmeti ve SQL Server Çoğaltması'nı seçin. Bu, hem yayın tarafı hem de abone tarafı için aynıdır.

Örnek Yapılandırması varsayılan olarak hem yayın tarafına hem de abone tarafına ayarlanır. Örnek adını değiştirseniz bile, aradaki fark, örnek adını daha sonra sunucu belirtiminde belirtip belirtmediğinizdir.

Yayın tarafında, SQL Server Agent'ı otomatik olarak başlatılacak şekilde yapılandırın. Bu ayarı daha sonra değiştirebilirsiniz.

Bu ipucu, SQL Server sa hesabıyla çoğaltmanın kimliğini doğrular. Bu nedenle, SQL Server kimlik doğrulamasını etkinleştirin. Güvenlik nedeniyle sa hesabını kullanmak istemiyorsanız, açıklamanın SQL Server kimlik doğrulaması bölümünü daha sonra Windows kimlik doğrulaması veya başka bir hesapla değiştirin.

Bu ayarı her iki sunucuda da aynı yapın.

SQL Server Management Studio'yu yükleme

İndirdiğiniz SQL Server Management Studio'yu yükleyin. Yükleme ekranı yalnızca yüklemek için olduğundan, açıklama atlanır.

Yüklemeden sonra yeniden başlatmanız istenirse Windows'u yeniden başlatın. Ayrıca, Windows Update'te tüm düzeltme eklerini yükleyin.

Yayımlama tarafı veritabanı ve tablolar oluşturma

Yayın tarafında bir tablo oluşturursanız, abone tarafı tabloyu veya kaydı otomatik olarak çoğaltır.

Yaratma yöntemi normal prosedürle aynıdır, bu yüzden ayrıntıları atlayacağım.

SQL Server Management Studio'da Yayın Veritabanı adlı bir veritabanı oluşturuyorsunuz.

"Kullanıcılar" adlı bir tablo oluşturun ve sütunları aşağıdaki gibi kaydedin: Tek yapmanız gereken kayıtların eşitlemesini denetlemektir, böylece tablonun adı, numarası ve sütun içeriği herhangi bir şey olabilir. Ancak, yalnızca birincil anahtar gereklidir.

Çoğaltma oluşturulduktan sonra kayıtların eşitlendiğinden emin olmak için birkaç kayıt ekleyin.

Uzak Bağlantıları Yapılandırma

Bunları birbirlerinin sunucularının veritabanlarına uzaktan erişime izin verecek şekilde yapılandırın. Ayrıntılar aşağıdaki ipuçlarında özetlenmiştir.

Klasör izinlerini ayarlama

Yayın tarafındaki sunucuda, aşağıdaki klasörün özelliklerini açın: Klasör yolu, SQL Server sürümüne ve örnek adına bağlıdır.

  • C:\Program Files\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\ReplData

Güvenlik sekmesinden "HİZMET" hesabını ekleyin ve tam denetime ayarlayın.

Dağıtımı Yapılandırma

Bu kez, dağıtım yayınla aynı sunucuda oluşturulur.

SQL Server Management Studio'yu başlatın, çoğaltmaya sağ tıklayın ve dağıtımı yapılandır' ı seçin.

İleri'ye tıklayın.

"Kendi sunucunuzu > kendi distribütörünüzü yapın" < işaretleyin.

Bundan sonra, tamamlamak için olduğu gibi "İleri" yi tıklayın.

Yayın oluşturma

Başlangıçta, aşağıdaki şekilde gösterildiği gibi sihirbazdan oluşturulur, SQL Server 2019'da, sihirbazdan oluşturma "yenilenebilir abonelikleri" etkinleştirmez ve kayıtların tablolar arasında eşitlenmesine izin vermez.

Bu nedenle, burada yayını oluşturmak için T-SQL kullanıyoruz.

Aşağıdakiler, SQL Server kimlik doğrulaması ile yayın oluşturmak için SQL'dir: Lütfen ayarlarınıza göre şifreyi değiştirin.

-- トランザクションパブリケーションを追加するための宣言
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'パブリケーションDB'; 
SET @publication = N'パブリケーション'; 
SET @login = 'sa'; 
SET @password = 'saパスワード'; 

USE [パブリケーションDB]

-- パブリケーションデータベースでトランザクションレプリケーションを有効にする。
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- sp_addlogreader_agent を実行して、エージェントジョブを作成します。
EXEC sp_addlogreader_agent 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

-- 即時更新、キュー更新、およびプルサブスクリプションをサポートするトランザクションパブリケーションを作成します。
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_sync_tran = N'true', 
    @allow_queued_tran = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true',
    -- 関連するデフォルトのプロパティを明示的に宣言する
    @conflict_policy = N'pub wins';

-- デフォルトのスケジュールを使用して、パブリケーションの新しいスナップショットジョブを作成します。
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;
GO

Windows kimlik doğrulamasını kullanırken, "sp_addlogreader_agent" ve "sp_addpublication_snapshot" bölümlerini aşağıdaki gibi değiştirin.

SQL Server Kimlik Doğrulaması

    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

Windows Kimlik Doğrulaması

    @job_login = @login, 
    @job_password = @password,
    @publisher_security_mode = 1;

Başarılı bir şekilde oluşturulursa, aşağıdakileri görürsünüz:

Ayrıca, oluşturulan yayının özelliklerini açın ve "Yenilenebilir abonelik" seçeneğinin etkinleştirildiğinden emin olun.

Makalelerin Belirtilmesi

Başlangıçta, bir sihirbazla oluşturursanız, makaleyi aynı anda belirteceksiniz, Yukarıdaki komut dosyası makale işlemeyi içermediğinden, özellikten belirtilir.

Soldaki menüden "Makaleler" i seçin, senkronize etmek istediğiniz tabloyu kontrol edin ve Tamam düğmesine tıklayın.

Eşitlenecek tablonun sütunlarına bir msrepl_tran_version eklenir ve aynı anda bir tablo tetikleyicisi eklenir.

Abonelik oluşturma

Yeni oluşturduğunuz yayına sağ tıklayın ve Yeni Abonelik'i seçin.

İleri'ye tıklayın.

Oluşturduğunuz yayını seçin.

Tüm aracıları Dağıtımcıda çalıştır <sunucu adı> seçeneğini işaretleyin.

SQL Server Abonesi Ekle düğmesini tıklatın.

Abone olarak kaydedilecek sunucuyu (+ örnek adı) belirtir.

Abone veritabanınız yoksa, yeni bir tane oluşturun. Zaten varsa, seçim öğesi görüntülendiği için seçin.

Veritabanını belirttikten sonra İleri'yi tıklatın.

Birden fazla aboneniz varsa, buradan istediğiniz kadar kayıt olabilirsiniz.

"..." düğmesini tıklayın.

Burada, aracı sa hesabı altında çalışır, ancak lütfen ortamınıza göre ayarlayın.

Sürekli Çalıştır'ı seçin.

"Yenilenebilir Abonelik" ayarı çalışır durumda olmalıdır.

"Değişiklikleri aynı anda gerçekleştirme" durumunda, hemen senkronize edilir, ancak tüm sunucuların çalışıyor olması gerekir.

"Sıra değişiklikleri ve mümkünse yürüt" değişiklikleri kuyrukta biriktirir, böylece sunucu çalışmasa bile sunucu çalışırken bunlar işlenir. Ancak, eşitleme zamanlaması yavaştır.

Önceden tanımlanmış bağlantılı veya uzak sunucu kullan'ı işaretleyin.

Şimdi'yi seçin.

İleri'ye tıklayın.

Son düğmesini tıklatın.

Hata yoksa kapatın.

Birkaç dakika sonra abone tarafında veritabanının oluşturulduğunu ve tabloların da oluşturulduğunu görebilirsiniz.

Kayıtların da eşitlendiğini doğrulayabilirsiniz.

Bir süre sonra senkronize edilmezse, lütfen aşağıdakileri yapın.

Oluşturulan aboneliğe sağ tıklayın ve Yeniden Başlat'ı seçin.

"Yeni anlık görüntü kullan" ı işaretleyin ve "Yeniden başlatmak için ayarla" düğmesini tıklayın.

Bir hata oluşursa yeniden deneyin.

Operasyon kontrolü

Yayın tarafında tablo eklemeyi veya değiştirmeyi deneyin.

Aboneyle senkronize edildiğinden emin olmak için birkaç saniye kadar bekleyin.

Şimdi abone tarafındaki kaydı değiştirelim.

Yayın tarafıyla eşitlendiğini doğrulayabilirsiniz.

Kayıtlı birden fazla aboneniz varsa, aboneler arasında senkronize edildiğinden emin olun.