Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Konfiguration der SQL Server-Transaktionsreplikation

Die Transaktionsreplikation in SQL Server ist eine der am häufigsten verwendeten Replikationstechniken zum Kopieren oder Verteilen von Daten auf mehrere Ziele. In früheren Artikeln haben wir die SQL Server-Replikation und die interne Funktionsweise der Replikation besprochen. Unser Ziel ist es nun zu sehen, wie die Transaktionsreplikation in SQL Server mithilfe des Sicherungsansatzes konfiguriert wird und wie Artikel zur Replikation ordnungsgemäß hinzugefügt oder entfernt werden. Ohne geeignete Maßnahmen riskieren wir, den Snapshot ungültig zu machen, und sehen uns der Notwendigkeit gegenüber, die Replikation neu zu konfigurieren.

Verwaltung der Transaktionsreplikation

In meinen vorherigen Artikeln sind wir die Schritt-für-Schritt-Anleitungen zu den folgenden Punkten durchgegangen:

  • Verteilung konfigurieren
  • Veröffentlichung mit Snapshot-Option konfigurieren
  • Abonnement mit Snapshot-Option konfigurieren

Beim Konfigurieren der Replikation haben wir zuerst den Verteiler konfiguriert. Dann fuhren wir fort, eine Veröffentlichung und ein Abonnement zu erstellen. Um die Replikation zu löschen oder zu bereinigen, müssen wir den umgekehrten Vorgang ausführen. Zuerst müssten wir das Abonnement löschen, dann die Veröffentlichung und schließlich den Verteiler oder die Verteilungsdatenbank löschen.

In diesem Artikel versuchen wir, die zuvor konfigurierte Transaktionsreplikation in SQL Server zu löschen. Wir verwenden den Backup-Ansatz und fügen Artikel wie folgt aus der Replikation hinzu oder entfernen sie:

  • Abonnement löschen
  • Veröffentlichung löschen
  • Verteiler oder Verteilungsdatenbank löschen
  • Bereinigen Sie die Replikation vollständig, wenn einer der oben genannten Schritte nicht richtig funktioniert
  • Replikation mit Datenbanksicherung konfigurieren
  • Löschen Sie Artikel aus der Replikation, indem Sie sowohl den Assistenten als auch den T-SQL-Ansatz verwenden
  • Fügen Sie neue Artikel zur Replikation hinzu, indem Sie sowohl den Assistenten als auch den T-SQL-Ansatz verwenden
  • Fügen Sie einen Artikel über gespeicherte Prozeduren hinzu und studieren Sie den Unterschied zwischen dem Tabellenartikel und dem Artikel über gespeicherte Prozeduren

Abonnement löschen

Um eine konfigurierte Replikation zu löschen, müssen wir zuerst das Abonnement löschen.

Stellen Sie in SSMS eine Verbindung zur Publisher-Instanz her> Replikation > Lokale Veröffentlichungen . Klicken Sie mit der rechten Maustaste auf das Abonnement> Löschen oder Ablegen Abonnement:

SQL Server fordert Sie auf, Ihre Aktion zu bestätigen:

Klicken Sie auf Ja das Abonnement zu kündigen. Dadurch wird das Abonnement vollständig gelöscht.

In meinem aktuellen Setup befinden sich sowohl Publisher als auch Subscriber auf derselben Instanz. Daher wurden keine Anforderungen zum Herstellen einer Verbindung mit der Abonnenteninstanz zur Validierung gesendet. Falls wir es auf einer anderen Instanz von SQL Server haben, würde es vor dem Löschen des Abonnenten fragen, ob es eine Verbindung zur Abonnenteninstanz herstellen möchte, um es zu validieren.

Das Löschen von Veröffentlichungen verwendet intern die sp_droppublication Prozedur und wir können diese Prozedur verwenden, um die Veröffentlichung manuell per T-SQL-Ansatz zu löschen

Veröffentlichung löschen

Sobald das Abonnement gelöscht ist, können wir fortfahren und die Publikation löschen . Klicken Sie mit der rechten Maustaste auf AdventureWorks_Pub und wählen Sie Löschen aus dem Menü:

Sie werden eine Nachricht sehen, in der Sie aufgefordert werden, diese Aktion zu bestätigen. Beachten Sie, dass Sie die Veröffentlichung löschen werden. Alle Datensätze, die in die Abonnentendatenbank repliziert wurden, werden jedoch nicht gelöscht. Wir müssen die Datenbank manuell löschen, um diese replizierten Datensätze zu bereinigen. Klicken Sie auf Ja .

Das interne Löschen einer Veröffentlichung wendet die sp_droppublication an Verfahren.

Löschen Sie den Distributor oder die Distributionsdatenbank

Wir haben bereits erwähnt, dass die Verteilungsdatenbank eine Systemdatenbank ist. Daher können wir es nicht löschen, indem wir mit der rechten Maustaste auf die Datenbank klicken und die Löschoption wie bei Benutzerdatenbanken auswählen. Wenn wir mit der rechten Maustaste auf die Verteilungsdatenbank klicken, erhalten wir nur die folgenden Optionen:

Wenn wir die Verteilungsdatenbank löschen müssen, müssen wir zuerst mit der rechten Maustaste auf die Replikation klicken Knoten> Deaktivieren Veröffentlichung und Vertrieb .

Es öffnet den Assistenten.

Standardmäßig ist die zweite Option (Nein, diesen Server weiterhin als Publisher verwenden ) ist ausgewählt, um zu vermeiden, dass versehentlich alle Veröffentlichungen auf dem Server abgelegt werden.

In unserem Fall haben wir nur eine Veröffentlichung, und wir möchten aufräumen. Daher wählen wir die erste Option – Ja, Veröffentlichung auf diesem Server deaktivieren . Es wird alle Veröffentlichungen zusammen mit Abonnements löschen, falls dies nicht bereits geschehen ist, zusammen mit dem Deaktivieren des Verteilers.

Wir können diesen Assistenten selbst verwenden, um alles zu bereinigen, wenn auf unserem Server nur eine Replikation konfiguriert ist. Wenn jedoch mehrere Replikationen konfiguriert sind, löschen wir die Transaktionsreplikation in SQL Server, indem wir die oben angegebenen Standardschritte befolgen.

Jetzt müssen wir die erste Option Ja, Veröffentlichung auf diesem Server deaktivieren auswählen , und klicken Sie auf Weiter .

Aktivieren Sie im neuen Fenster beide Optionen:Veröffentlichung und Verteilung deaktivieren und Generieren Sie eine Skriptdatei mit Schritten…

Zum Generieren der Skriptdatei müssen Sie den Pfad angeben, in dem sie gespeichert werden soll.

Klicken Sie auf Weiter und sehen Sie sich die im Assistenten ausgewählten Optionen an. Überprüfen und vergewissern Sie sich, dass Sie alles richtig ausgewählt haben.

Klicken Sie auf Fertig stellen .

Das interne Löschen der Verteilungsdatenbank verwendet den sp_dropdistributor Verfahren.

Sobald der Verteiler deaktiviert ist, können wir sehen, dass die Verteilungsdatenbank aus den Systemdatenbanken entfernt wird.

Replikation vollständig bereinigen, wenn einer der oben genannten Schritte nicht richtig funktioniert

Wenn das Abonnement oder die Veröffentlichung über einen anderen Ansatz gelöscht wird, landen wir in einer inkonsistenten Entfernung der Transaktionsreplikation in SQL Server und erhalten viele Fehler. Um alle Rückstände von Abonnement oder Veröffentlichung zu bereinigen, können wir die Systemprozedur sp_removedbreplication verwenden .

exec_spremovedbreplication

Führen Sie dieses Verfahren nur aus, wenn nach dem Ausprobieren aller anderen genannten Ansätze noch Replikationsprobleme bestehen. Gespeicherte Prozedur sp_removedbreplication sollte auf der Publisher-Datenbank oder von der Master-Datenbank ausgeführt werden und den folgenden Befehl verwenden, nachdem @dbname durch den Namen der Publisher-Datenbank ersetzt wurde.

exec_spremovedbreplication @dbname

Konfigurieren Sie die Replikation mit dem Backup-Ansatz

Nachdem Sie die Replikation vollständig entfernt haben, konfigurieren wir die Transaktionsreplikation in SQL Server mithilfe des Sicherungsansatzes neu. Es umfasst die folgenden Schritte:

  • Konfigurieren Sie den Verteiler
  • Erstellen Sie die Veröffentlichung
  • Ändern Sie die Veröffentlichungseigenschaften, um das Erstellen eines Abonnements aus der vollständigen oder differenziellen Sicherung zu ermöglichen.
  • Erstellen Sie eine vollständige Sicherung des Herausgebers und stellen Sie sie als Abonnent wieder her.
  • Konfigurieren Sie das Abonnement und starten Sie die Initialisierung von der Sicherung.

Die meisten Schritte haben wir bereits früher bei der Konfiguration der Replikation durchgeführt. Daher gehen wir hier nicht näher auf diese Schritte ein.

Verteiler und Veröffentlichung konfigurieren

Beziehen Sie sich auf die Schritt-für-Schritt-Anleitung aus dem vorherigen Artikel, um zu erfahren, wie Sie sowohl die Verteilung als auch die Veröffentlichung mit dem Assistenten zum Erstellen von Veröffentlichungen konfigurieren. Um die T-SQL-Skripte zu lernen, die vom Assistenten zum Erstellen von Verteilung und Veröffentlichung verwendet werden, generieren Sie die Skripte einfach während des letzten Schritts des Assistenten in einer Datei und führen Sie die Skripte nicht aus, indem Sie die Option „Veröffentlichung erstellen“ wie unten gezeigt deaktivieren .

Öffnen Sie nun die in einem neuen Abfragefenster gespeicherte Skriptdatei, um den Verteiler und die Veröffentlichung mit diesen Skripts zu erstellen:

Bitte beachten Sie die zweite kommentierte Zeile – sie besagt, dass alle Passwortwerte, die wir in den Assistenten eingegeben haben, aus Sicherheitsgründen in NULL oder eine leere Zeichenfolge konvertiert wurden. Sehen Sie sich die hervorgehobene Zeile mit @password =leere Werte an. Ersetzen Sie das durch die korrekten Passwortwerte, machen Sie dasselbe für andere Abschnitte mit Passwörtern und führen Sie das Skript aus.

Das Skript wurde erfolgreich ausgeführt. Wir können sehen, dass die Ausführung von Skripten die Verteilungsdatenbank und alle darin enthaltenen Systemtabellen erstellt hat. Am Ende der Nachricht können wir sehen, dass der Log Reader Agent-Job ebenfalls erstellt und gestartet wurde.

Bei Bedarf können Sie die Ergebnisse speichern, um mehr über alle Tabellen, Ansichten und kritischen Prozeduren in der Verteilungsdatenbank zu erfahren. Diese Informationen sind für die weitere Fehlerbehebung hilfreich.

Nach erfolgreicher Ausführung der Skripte können wir die Verteilungsdatenbank und die erfolgreich erstellte Veröffentlichung sehen.

Ändern Sie die Veröffentlichungseigenschaften, um das Erstellen eines Abonnements aus einer vollständigen oder differenziellen Sicherung zu ermöglichen

Wenn die Datenbankgröße sehr klein ist, ist die zum Senden des Anfangs-Snapshots erforderliche Zeit kürzer.

Andererseits ist das Erstellen einer Transaktionsreplikation in SQL Server mithilfe von Snapshot in den folgenden Fällen nicht effizient:

  1. Wenn die Datenbank riesig ist (300 GB oder mehr). Die zum Senden des ersten Schnappschusses erforderliche Zeit ist zu lang.
  2. Wenn sich der Abonnent an verschiedenen Standorten mit geringer Netzwerkbandbreite befindet. Dann wird der anfängliche Snapshot-Prozess mehrere Tage dauern.

Daher ist das Erstellen einer vollständigen Sicherung, deren Übertragung per FTP oder physisch an den anderen Standort, die Wiederherstellung dieser Sicherung und die Initialisierung des Abonnenten im Vergleich zum Snapshot-Ansatz erheblich schneller.

Damit die Veröffentlichung die Initialisierung aus Sicherungen unterstützt, müssen wir eine der Veröffentlichungseigenschaften ändern. Dies kann entweder über SSMS oder T-SQL erfolgen.

SSMS-Ansatz

Klicken Sie mit der rechten Maustaste auf AdventureWorks_pub Veröffentlichung und wählen Sie Eigenschaften :

Klicken Sie auf Abonnementoptionen :

Setzen Sie Wahr für Initialisierung aus Sicherungsdateien zulassen und klicken Sie auf OK . Dadurch können wir sowohl von der vollständigen als auch von der differenziellen Sicherung initialisieren.

T-SQL-Ansatz

In T-SQL können wir die Prozedur sp_changepublication aufrufen um diese Eigenschaft zu ändern.

Das Skript zum Ändern dieser Eigenschaft ist unten:

USE AdventureWorks
GO
exec sp_changepublication @publication = 'AdventureWorks_pub', @property = 'allow_initialize_from_backup', @value = 'true'

Erstellen Sie eine vollständige Sicherung des Herausgebers und stellen Sie sie als Abonnent wieder her

Ein Schlüsselfaktor, um zu beachten, dass wir nach der Implementierung der obigen Veröffentlichungseigenschaft eine vollständige Sicherung durchführen müssen. Wenn die Datenbankgröße sehr groß ist, können wir eine vollständige Sicherung erstellen und sie im RECOVERY-Modus in der Abonnenteninstanz wiederherstellen und eine differenzielle Sicherung erstellen, nachdem wir die obige Konfigurationsänderung vorgenommen haben, und sie in der Abonnentendatenbank mit dem NORECOVERY-Modus wiederherstellen.

Abonnement konfigurieren und Initialisierung aus Backup starten

Beachten Sie auch hier die Schritt-für-Schritt-Anleitung. Wir müssen die erforderlichen Skripte generieren, aber nicht ausführen. Die Sache ist die, dass wir das Abonnement von der vollständigen oder differenziellen Sicherung initialisieren nur mit T-SQL-Skripten. Ich habe diese Skripte letztes Mal während der Abonnementerstellung erstellt. Siehe die geöffnete Datei unten.

Hinweis :Die Skripte für die Abonnementerstellung müssen aus der Publisher-Datenbank ausgeführt werden. Öffnen Sie daher das Abfragefenster, das eine Verbindung zur Publisher-Instanz herstellt.

Wir müssen ein paar Änderungen vornehmen, damit das Abonnement von der Sicherung initialisiert wird:

  • Ändern Sie @sync_type Wert von automatisch mit Sicherung initialisieren
  • Geben Sie die richtigen Passwörter für diejenigen an, die durch NULL oder leere Zeichenfolgen ersetzt wurden. Da ich das Agent-Service-Konto innerhalb des Servers verwendet habe, muss ich keine Passwörter ändern.
  • Fügen Sie die Parameter @backupdevicetype hinzu und @Backupgerätename und geben Sie den Pfad zur vollständigen oder differenziellen Sicherung auf dem Publisher-Server an (das Skript wird darauf ausgeführt).

Wenn Sie fertig sind, sieht unser Skript so aus:

Führen Sie das Skript aus, um die Abonnementkonfiguration abzuschließen, und wir erhalten den erfolgreichen Abschluss des Skripts wie unten gezeigt.

Wie der Status anzeigt, wurde der Verteilungs-Agent-SQL Server-Agent-Auftrag erstellt und gestartet, während das Abonnement erstellt wurde.

Somit haben wir unsere Replikation erfolgreich mit dem Backup-Ansatz erstellt. Jetzt können wir das verfügbare Abonnement überprüfen.

Starten Sie den Replikationsmonitor und klicken Sie mit der rechten Maustaste auf den Abonnenten. Der Replikationsstatus wird angezeigt:

Wie wir sehen können, wurden alle Daten erfolgreich aus dem Backup initialisiert, ohne dass der Snapshot-Agent-Job ausgeführt werden musste. Da in der Datenbank keine aktiven Transaktionen stattfinden, erhalten wir in diesem Moment die Meldung „Keine replizierten Transaktionen verfügbar“ im Replikationsmonitor.

Artikel aus der Replikation löschen

Nachdem wir gelernt haben, wie die Transaktionsreplikation in SQL Server über den Replikationsassistenten oder T-SQL-Skripts konfiguriert wird, können wir jetzt prüfen, wie Sie mit diesen beiden Methoden einen Artikel aus der Replikation löschen können.

Mit dem Assistenten

Klicken Sie mit der rechten Maustaste auf AdventureWorks_pub Veröffentlichung> Eigenschaften . Klicken Sie auf Artikel , um die Liste der Artikel anzuzeigen, die in der Replikation enthalten sind.

Standardmäßig werden die Datenbankobjekte im Format OBJECT_NAME (SCHEMA_NAME). aufgelistet Lassen Sie uns zu Testzwecken die Tabelle Person.ContactType löschen aus der Replikation.

Deaktivieren Sie dazu einfach das Kontrollkästchen vor ContactType (Person). SQL Server zeigt die Warn- oder Bestätigungsmeldung an:

Wie es erklärt, werden, wenn derzeit Snapshots verfügbar sind, diese Snapshots aufgrund der Änderungen in den Artikeln ungültig.

Da wir mit dem Backup-Ansatz initialisiert und keine Snapshots verwendet haben, können wir diese Meldung getrost ignorieren und auf Ja klicken um diesen Tabellenartikel aus der Replikation zu entfernen. Klicken Sie auf OK um das Entfernen des Artikels aus der Replikation abzuschließen.

Jetzt die Person.ContactType Tabelle wird aus der Replikation entfernt. Alle Änderungen, die auf dem Herausgeber vorgenommen werden, werden nicht an die Abonnentendatenbank gesendet. Wir können dies durch INSERT/UPDATE/DELETE Datensätze auf Person.ContactType testen Tabelle.

Mit T-SQL

Eine andere Möglichkeit besteht darin, einen Artikel mithilfe von sp_droparticle aus der Replikation zu löschen Verfahren.

USE [AdventureWorks]
GO
EXEC sp_droparticle 
  @publication = N'AdventureWorks_pub', 
  @article = N'ContactType',
  @force_invalidate_snapshot = 1;
GO

Neue Artikel per Assistent oder TSQL-Ansatz zur Replikation hinzufügen

In einigen Fällen (z. B. bei der Tabellenwartung) müssen wir möglicherweise einige Artikel entfernen und nach Abschluss der Wartungsarbeiten wieder zur Replikation hinzufügen.

Wir haben erfolgreich gelernt, wie man Artikel aus der Replikation entfernt. Sehen wir uns an, wie neue Artikel zur Replikation hinzugefügt werden. Wir fügen den Person.ContactType hinzu Tabelle die wir zuvor entfernt haben, zurück zur Replikation.

Assistent verwenden

Um einen Tabellenartikel wieder zur Replikation hinzuzufügen, klicken Sie mit der rechten Maustaste auf Veröffentlichung > Eigenschaften > Artikel . Es wird die Liste der in der Veröffentlichung verfügbaren Artikel angezeigt.

Wir konnten Person.ContactType nicht finden Tabelle – Der Bildschirm zeigt nur die Tabellen an, die Teil der Replikation waren. Um alle in der Publisher-Datenbank verfügbaren Tabellen anzuzeigen, deaktivieren Sie sie Nur ausgewählte Artikel in der Liste anzeigen um alle Tabellen anzuzeigen.

Jetzt können wir den Person.ContactType sehen Tabelle aufgelistet.

Wie bereits erwähnt, haben alle Tabellen ohne Primärschlüssel einen roten Kreis Symbol, das anzeigt, dass diese Tabellen weder über den Assistenten noch über den T-SQL-Ansatz in die Replikation aufgenommen werden können.

Überprüfen Sie den ContactType (Person) Tabelle, um sie wieder zur Replikation hinzuzufügen, und klicken Sie auf OK .

Die Tabelle wird der Replikation erneut hinzugefügt. Wir müssen jedoch eine Methode ausarbeiten, um den anfänglichen Schnappschuss für diesen neu hinzugefügten Tabellenartikel zu senden.

Wenn Sie den Artikel bis hierhin gelesen haben, haben Sie richtig geraten – führen Sie einfach den Snapshot-Agent-Job aus, um den anfänglichen Snapshot für diese Tabelle zu senden.

Machen wir das jetzt – klicken Sie mit der rechten Maustaste auf Veröffentlichung > Anzeigen des Snapshot-Agenten Status.

Klicken Sie auf Start um den Schnappschuss für berechtigte Artikel zu senden. Senden Sie diese Daten an die Verteilungsdatenbank und schließlich an die Abonnentendatenbank.

T-SQL-Ansatz

Wir können ähnliche Aktionen mit sp_addarticle ausführen Verfahren.

Das folgende Skript fügt der Replikation Artikel hinzu.

use [AdventureWorks]
GO
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'ContactType', @source_owner = N'Person', @source_object = N'ContactType'
, @type = N'logbased', @description = null, @creation_script = null, @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509F
, @identityrangemanagementoption = N'manual', @destination_table = N'ContactType', @destination_owner = N'Person', @vertical_partition = N'false'
, @ins_cmd = N'CALL sp_MSins_PersonContactType'
, @del_cmd = N'CALL sp_MSdel_PersonContactType'
, @upd_cmd = N'SCALL sp_MSupd_PersonContactType'
GO

Wir haben bereits festgestellt, wie die Replikation für einen Tabellenartikel funktioniert, indem wir 3 Prozeduren anwenden, die in der Abonnentendatenbank erstellt wurden, um die Operationen INSERT/UPDATE und DELETE zu handhaben.

Mit dem T-SQL-Ansatz wissen wir, wie auf diese Prozeduren verwiesen wird. Bei Bedarf können wir Objekte, Zieltabellennamen oder Standardprozeduren umbenennen. Dafür nehmen wir Änderungen am sp_addarticle vor Verfahren.

HINWEIS :Wenn wir Änderungen an der Replikation vornehmen, sollten wir sie alle ordnungsgemäß dokumentieren. Andernfalls könnte es später zu einer Katastrophe kommen.

Fügen Sie einen Artikel über gespeicherte Prozeduren hinzu und untersuchen Sie den Unterschied zwischen einem Tabellenartikel und einem Artikel über gespeicherte Prozeduren

Um der Replikation eine gespeicherte Prozedur hinzuzufügen, müssen wir zu den Artikeln gehen Seite und überprüfen Sie die erforderliche gespeicherte Prozedur, um sie zu replizieren. Dasselbe können wir für Aufrufe tun , Indizierte Ansichten , oder Benutzerdefinierte Funktionen auch.

Um mehr über den Unterschied zu erfahren zwischen Tabellenartikeln und Ansichten/gespeicherten Prozeduren/indizierten Ansichten/benutzerdefinierten Funktionen können wir mithilfe von T-SQL einen Artikel für jede Kategorie hinzufügen:

Hinzufügen eines Artikels zu einer neuen gespeicherten Prozedur zur Replikation

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'uspGetBillOfMaterials', @source_owner = N'dbo'
, @source_object = N'uspGetBillOfMaterials', @type = N'proc schema only', @description = null, @creation_script = null
, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001, @force_invalidate_snapshot = 1
, @destination_table = N'uspGetBillOfMaterials', @destination_owner = N'dbo'

Hinzufügen eines neuen Ansichtsartikels zur Replikation

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'vVendorWithContacts', @source_owner = N'Purchasing'
, @source_object = N'vVendorWithContacts', @type = N'view schema only', @description = null, @creation_script = null, @pre_creation_cmd = N'drop'
, @schema_option = 0x0000000008000001, @destination_table = N'vVendorWithContacts', @destination_owner = N'Purchasing'
GO

Hinzufügen eines neuen indizierten Ansichtsartikels zur Replikation

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'vStateProvinceCountryRegion', @source_owner = N'Person'
, @source_object = N'vStateProvinceCountryRegion', @type = N'indexed view schema only', @description = null, @creation_script = null
, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001, @force_invalidate_snapshot = 1
, @destination_table = N'vStateProvinceCountryRegion', @destination_owner = N'Person'

Hinzufügen eines neuen benutzerdefinierten Funktionsartikels zur Replikation

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'ufnGetStock', @source_owner = N'dbo', @source_object = N'ufnGetStock'
, @type = N'func schema only', @description = null, @creation_script = null, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001
, @force_invalidate_snapshot = 1, @destination_table = N'ufnGetStock', @destination_owner = N'dbo'

Wir verwenden den sp_addarticle Verfahren zum Hinzufügen eines beliebigen Artikeltyps zur Replikation mit den erforderlichen Eingabeparametern und Optionen zum Ändern des enthaltenen @type Parameter.

Wir können diese Artikel auch zur Veröffentlichung hinzufügen, indem Sie mit der rechten Maustaste auf Veröffentlichung klicken > Eigenschaften > Artikel und Hinzufügen zur Veröffentlichung.

Tabellenartikeleigenschaften

Lassen Sie uns nun die Artikeleigenschaften über die Artikel ändern Menü in der Publikation Eigenschaften:

Klicken Sie auf unseren bevorzugten Person.ContactType table> Artikeleigenschaften . Es wird eine Option geben, entweder die Artikeleigenschaften zu ändern nur für diese Tabelle oder alle in der Replikation enthaltenen Tabellen. Für einen Test wählen wir Eigenschaften des hervorgehobenen Tabellenartikels festlegen um die Eigenschaften von Person.ContactType anzuzeigen Tabelle.

Alle für diesen Tisch verfügbaren Optionen anzeigen Artikel:

Objekte und Einstellungen zum Abonnenten kopieren und Auszugszustellung sind die wichtigsten Einstellungen für die Replikation. Wir müssen sehr vorsichtig sein, wenn wir einen dieser Parameter ändern.

Klicken Sie auf das Lieferformat EINFÜGEN\AKTUALISIEREN\LÖSCHEN, um die folgenden Optionen zu erhalten.

  • INSERT\UPDATE\DELETE-Anweisungen nicht replizieren – um die Replikation so anzupassen, dass bestimmte Befehle nicht an die Abonnentendatenbank gesendet werden
  • INSERT\UPDATE\DELETE-Anweisung – um die INSERT\UPDATE\DELETE-Anweisung direkt an den Abonnenten zu senden, anstatt die Daten aus Transaktionsprotokollen zu rekonstruieren
  • CALL – Führt die integrierte gespeicherte Prozedur aus, die oben in sp_addarticle gezeigt wird um Daten zu replizieren.
  • XCALL – Erweiterte gespeicherte Prozedur ausführen, um die Änderungen zu replizieren.

Artikeleigenschaften für gespeicherte Prozeduren

Klicken Sie auf Artikeleigenschaften auf eine der gespeicherten Prozeduren, um die Eigenschaften anzuzeigen

Eine der Schlüsseleigenschaften der gespeicherten Prozedur ist die Replikationsoption – siehe unten die verfügbaren Optionen:

  • Nur Definition gespeicherter Prozeduren – repliziert nur die Änderungen der Stored Procedure DDL-Struktur. Dies ist die Standardoption für jede gespeicherte Prozedur.
  • Ausführung der gespeicherten Prozedur – Verwenden Sie diese Option, um die Replikationslast zu reduzieren. Es führt alle Änderungen über die Ausführung einer gespeicherten Prozedur auf dem Abonnenten durch, ohne einzelne Befehle zu senden. In meinem nächsten Artikel erfahren Sie mehr über diese Funktion zum Beheben von Leistungsproblemen beim Replizieren großer Datenänderungen.
  • Ausführung in einer serialisierten Transaktion des SP – eine hybride Option zur Auswahl von Ausführung einer gespeicherten Prozedur nur wenn die Prozedur innerhalb einer serialisierten Transaktion ausgeführt wird. Andernfalls würden sie als einzelne DML-Befehle repliziert.

Artikeleigenschaften anzeigen

Klicken Sie auf Artikeleigenschaften für jede Ansicht, um die Eigenschaften zu erhalten :

Artikeleigenschaften der indizierten Ansicht

Klicken Sie auf Artikeleigenschaften für eine der indizierten Ansichten für die Eigenschaften :

Eigenschaften von benutzerdefinierten Funktionsartikeln

Klicken Sie auf Artikeleigenschaften auf jede benutzerdefinierte Funktion für ihre Eigenschaften

Die Eigenschaften von Ansichten, indizierten Ansichten und benutzerdefinierten Funktionen sind ziemlich gleich. Daher können wir sie nicht stark anpassen.

Schlussfolgerung

Vielen Dank, dass Sie sich einen weiteren leistungsstarken Artikel zum Thema Replikation angesehen haben. Heute haben wir die Details zum Löschen von Abonnements, Veröffentlichungen, Verteilungsdatenbanken und zur vollständigen Bereinigung der Replikation geklärt, auch wenn wir auf Probleme stoßen.

Wir haben eine aus dem Backup neu initialisierte Replikation konfiguriert und getestet, wie man neue Artikel zur Replikation hinzufügt oder daraus entfernt. Bei der weiteren Arbeit mit Datenbanken und insbesondere beim Auffinden von Diskrepanzen zwischen ihnen werden Sie von den professionellen Tools stark profitieren. Das dbForge Compare Bundle für SQL Server identifiziert und analysiert all diese Unterschiede und meldet sie.

In unserem nächsten Artikel untersuchen wir häufig auftretende Replikationsprobleme und wie sie professionell gelöst werden können.