2016-04-24 9 views
0

Die Situation ist dies: Wir haben eine SQL Server-Replikations-Subskribenten-Datenbank, die replizierte Daten von einem unserer Kern-OLTP-Systeme empfängt, die wir als Quelle für das Bestücken unseres Data Warehouse verwenden. (Auch unsere OLTP-Datenbank wird von einem Drittanbieter gehostet).Kann ich bestimmte Daten aus der SQL Server-Replikationsteilnehmerdatenbank löschen, ohne die Replikation zu unterbrechen?

Um die Leistung auf dem Abonnenten zu erhöhen, möchte ich Datenzeilen löschen, die älter sind als eine Datenaufbewahrungsgrenze, die wir eingerichtet haben. Wir können dies nicht in der Publisher-Datenbank tun und lassen die Löschungen nach unten replizieren, weil dies zu kostspielig wäre (Verkäufer) und andere Geschäftseinheiten, die das Frontend verwenden, verschlimmern könnte.

Ich würde gerne wissen, ob ich weitermachen und die Löschung der Daten in der Teilnehmerdatenbank durchführen kann, ohne (a) die Replikation irgendwie zu unterbrechen oder (b) die gelöschten Zeilen einfach neu zu füllen. Ist das möglich?

Antwort

0

Ja, das ist möglich. Zeilen, die Sie auf dem Abonnenten löschen, gehen und bleiben weg. Die Replikation wird dadurch nicht unterbrochen, da im schlimmsten Fall eine DELETE oder UPDATE-Anweisung repliziert werden kann, die dann nichts löscht/aktualisiert (was kein Fehler ist). Ein wichtiger Vorbehalt, allerdings: wenn Sie das Abonnement neu initialisieren müssen (was aus verschiedenen Gründen notwendig sein kann, z. B. wenn Datenkorruption bei dem Abonnenten auftritt oder * CENSORED * Daten einfügt, die nicht eingefügt worden sein sollen und ...) Replikationspausen) wird ein neuer Snapshot erstellt, der die gelöschten Zeilen enthält, die dann auf dem Abonnenten wieder angezeigt werden. Sie müssen Ihre Löschungen erneut ausführen und darauf achten, dass sie keine große Last erzeugen, wenn viele zu löschende Zeilen vorhanden sind (am wahrscheinlichsten durch Stapelverarbeitung).