Aktivieren erneuerbarer Abonnements für die Transaktionsreplikation in SQL Server 2019

Erstellungsdatum der Seite :

Einführung und Vorsichtsmaßnahmen

Dieser Artikel ist für die Replikation in SQL Server 2019 vorgesehen. Eine der Funktionen darin ist "Renewable Subscription" ist aktiviert.

Dieses Feature war in früheren Versionen von SQL Server standardmäßig aktiviert, ist aber seit (wahrscheinlich) 2017 deaktiviert.

In zukünftigen Versionen von SQL Server wird dieses Feature möglicherweise entfernt. Abgesehen vom Upgrade einer vorhandenen Umgebung wird empfohlen, diese durch eine neue Konstruktion durch Mergereplikation usw. zu ersetzen.

Referenz

Umwelt

Verwenden Sie zwei Server, einen Server und zwei SQL Server. Windows Server befindet sich in einem Zustand, in dem unmittelbar nach der Installation keine zusätzlichen Einstellungen vorgenommen wurden.

1. Einheit (Veröffentlichungsseite)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Developer Edition (Standard Edition oder höher erforderlich)
  • SQL Server Management Studio 18.9.1
Zweite Einheit (Teilnehmerseite)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Express Edition
  • SQL Server Management Studio 18.9.1

Zweck

Auch wenn Tabelleneinträge in der ersten oder zweiten Serverdatenbank aktualisiert werden Stellen Sie sicher, dass Tabellendatensätze auf den Servern des jeweils anderen Servers synchronisiert sind.

Übrigens ist eine auf der Publikationsseite in Ordnung, aber die Teilnehmerseite kann eine beliebige Anzahl von Einheiten haben. Es funktioniert auch mit mehreren Instanzen von SQL Server auf einem einzelnen Server.

Installieren von SQL Server

Die Installation von SQL Server ist nicht der Hauptteil dieser Tipps, daher werde ich nicht auf Details eingehen. Es werden nur diejenigen aufgelistet, die für die Replikation relevant sind.

Für die Installation der Veröffentlichungsseite ist eine Standard Edition oder höher erforderlich. In diesen Tipps wird die Developer Edition als Testumgebung installiert.

Abonnenten sind mit der Express Edition einverstanden. Natürlich sind andere Editionen in Ordnung, abhängig von der DB-Konfiguration.

Wählen Sie für Featureauswahl die Option Datenbankmoduldienst und SQL Server-Replikation aus. Dies gilt sowohl für die Veröffentlichungsseite als auch für die Abonnentenseite.

Die Instanzkonfiguration ist standardmäßig sowohl auf der Publikationsseite als auch auf der Abonnentenseite vorgesehen. Selbst wenn Sie den Instanznamen ändern, besteht der Unterschied darin, ob Sie den Instanznamen später in der Serverspezifikation angeben oder nicht.

Konfigurieren Sie auf der Veröffentlichungsseite den SQL Server-Agent so, dass er automatisch gestartet wird. Sie können diese Einstellung später ändern.

Dieser Tipp authentifiziert die Replikation mit dem SQL Server sa-Konto. Aktivieren Sie daher die SQL Server-Authentifizierung. Wenn Sie das sa-Konto aus Sicherheitsgründen nicht verwenden möchten, ersetzen Sie den SQL Server-Authentifizierungsteil der Erläuterung später durch Windows-Authentifizierung oder ein anderes Konto.

Legen Sie diese Einstellung auf beiden Servern fest.

Installieren von SQL Server Management Studio

Installieren Sie das SQL Server Management Studio, das Sie heruntergeladen haben. Da der Installationsbildschirm nur installiert werden soll, entfällt die Erklärung.

Starten Sie Windows neu, wenn Sie nach der Installation zum Neustart aufgefordert werden. Installieren Sie außerdem alle Patches in Windows Update.

Erstellen einer veröffentlichungsseitigen Datenbank und von Tabellen

Wenn Sie eine Tabelle auf der Publikationsseite erstellen, repliziert die Abonnentenseite automatisch die Tabelle oder den Datensatz.

Die Methode der Erstellung ist die gleiche wie die normale Prozedur, daher werde ich die Details weglassen.

Sie erstellen eine Datenbank mit dem Namen Publication DB in SQL Server Management Studio.

Erstellen Sie eine Tabelle mit dem Namen "Users" und registrieren Sie die Spalten wie folgt: Alles, was Sie tun müssen, ist die Synchronisierung von Datensätzen zu überprüfen, damit der Name, die Nummer und der Spalteninhalt der Tabelle beliebig sein können. Es wird jedoch nur der Primärschlüssel benötigt.

Fügen Sie einige Datensätze hinzu, um sicherzustellen, dass die Datensätze synchronisiert werden, nachdem die Replikation erstellt wurde.

Konfigurieren von Remoteverbindungen

Konfigurieren Sie sie so, dass sie den Remotezugriff auf die Datenbanken der Server des jeweils anderen anderen Servers ermöglichen. Details sind in den folgenden Tipps zusammengefasst.

Festlegen von Ordnerberechtigungen

Öffnen Sie auf dem Server auf der Publikationsseite die Eigenschaften des folgenden Ordners: Der Ordnerpfad hängt von der Version von SQL Server und dem Instanznamen ab.

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

Fügen Sie auf der Registerkarte Sicherheit das Konto "SERVICE" hinzu und legen Sie es auf Vollzugriff fest.

Konfigurieren der Distribution

Dieses Mal wird die Verteilung auf demselben Server wie die Publikation erstellt.

Starten Sie SQL Server Management Studio, klicken Sie mit der rechten Maustaste auf Replikation, und wählen Sie Verteilung konfigurieren aus.

Klicken Sie auf Weiter.

Aktivieren Sie < "Erstellen Sie Ihren eigenen Server > Ihren eigenen Distributor".

Klicken Sie anschließend auf "Weiter", um es abzuschließen.

Erstellen einer Publikation

Ursprünglich wird es aus dem Assistenten erstellt, wie in der folgenden Abbildung dargestellt: In SQL Server 2019 werden beim Erstellen aus einem Assistenten keine "erneuerbaren Abonnements" aktiviert und die Synchronisierung von Datensätzen zwischen Tabellen nicht zugelassen.

Daher verwenden wir T-SQL, um die Publikation hier zu erstellen.

Im Folgenden finden Sie SQL zum Erstellen einer Publikation mit SQL Server-Authentifizierung: Bitte ändern Sie das Passwort entsprechend Ihren Einstellungen.

-- トランザクションパブリケーションを追加するための宣言
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

Wenn Sie die Windows-Authentifizierung verwenden, ändern Sie die Teile "sp_addlogreader_agent" und "sp_addpublication_snapshot" wie folgt.

SQL Server-Authentifizierung

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

Windows-Authentifizierung

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

Wenn es erfolgreich erstellt wurde, sehen Sie Folgendes:

Öffnen Sie auch die Eigenschaften der erstellten Publikation und stellen Sie sicher, dass "Erneuerbares Abonnement" aktiviert ist.

Angeben von Artikeln

Wenn Sie es ursprünglich mit einem Assistenten erstellen, geben Sie den Artikel gleichzeitig an. Da das obige Skript keine Artikelverarbeitung enthält, wird es von der Eigenschaft angegeben.

Wählen Sie "Artikel" aus dem Menü auf der linken Seite, überprüfen Sie die Tabelle, die Sie synchronisieren möchten, und klicken Sie auf die Schaltfläche OK.

Den Spalten der zu synchronisierenden Tabelle wird ein msrepl_tran_version hinzugefügt, und gleichzeitig wird ein Tabellentrigger hinzugefügt.

Erstellen eines Abonnements

Klicken Sie mit der rechten Maustaste auf die soeben erstellte Publikation, und wählen Sie Neues Abonnement aus.

Klicken Sie auf Weiter.

Wählen Sie die erstellte Publikation aus.

Aktivieren Sie das Kontrollkästchen Alle Agenten auf Verteiler ausführen <Servername>.

Klicken Sie auf die Schaltfläche SQL Server-Abonnenten hinzufügen.

Gibt den Server (+ Instanzname) an, der als Abonnent registriert werden soll.

Wenn Sie nicht über eine Abonnentendatenbank verfügen, erstellen Sie eine neue. Wenn es bereits vorhanden ist, wählen Sie es aus, da das Auswahlelement angezeigt wird.

Nachdem Sie die Datenbank angegeben haben, klicken Sie auf Weiter.

Wenn Sie mehr als einen Abonnenten haben, können Sie hier so viele registrieren, wie Sie benötigen.

Klicken Sie auf die Schaltfläche "...".

Hier läuft der Agent unter dem sa-Konto, aber bitte legen Sie es entsprechend Ihrer Umgebung fest.

Wählen Sie Fortlaufend ausführen aus.

Die Einstellung "Erneuerbares Abonnement" sollte betriebsbereit sein.

Im Falle von "Änderungen gleichzeitig festschreiben" wird es sofort synchronisiert, aber alle Server müssen laufen.

"Änderungen in der Warteschlange einreihen und wenn möglich festschreiben" akkumuliert Änderungen in der Warteschlange, sodass sie festgeschrieben werden, wenn der Server ausgeführt wird, auch wenn der Server nicht ausgeführt wird. Das Synchronisierungstiming ist jedoch langsam.

Aktivieren Sie Vordefinierten Verbindungs- oder Remoteserver verwenden.

Wählen Sie Jetzt aus.

Klicken Sie auf Weiter.

Klicken Sie auf die Schaltfläche Fertig stellen.

Schließen Sie, wenn keine Fehler vorliegen.

Nach einigen Augenblicken können Sie sehen, dass die Datenbank auf der Abonnentenseite erstellt wurde und dass die Tabellen ebenfalls erstellt wurden.

Sie können überprüfen, ob die Datensätze ebenfalls synchronisiert sind.

Wenn es nach einer Weile nicht synchronisiert wird, gehen Sie bitte wie folgt vor.

Klicken Sie mit der rechten Maustaste auf das erstellte Abonnement, und wählen Sie Neu initialisieren aus.

Aktivieren Sie "Neuen Snapshot verwenden" und klicken Sie auf die Schaltfläche "Zur Neuinitialisierung festlegen".

Wenn ein Fehler auftritt, versuchen Sie es erneut.

Betriebsprüfung

Versuchen Sie, Tabellen auf der Publikationsseite hinzuzufügen oder zu ändern.

Warten Sie einige Sekunden, um sicherzustellen, dass es mit dem Abonnenten synchronisiert ist.

Lassen Sie uns nun den Datensatz auf der Abonnentenseite ändern.

Sie können überprüfen, ob es mit der Publikationsseite synchronisiert ist.

Wenn Sie mehrere Abonnenten registriert haben, stellen Sie sicher, dass sie zwischen den Abonnenten synchronisiert sind.