Ich habe SQL Server-Datenbank (Mainserver) in einer Instanz und SQL-Server-Datenbank für RerportServer in anderen installiert. Was ist der beste Weg, um Daten von mainServer zum Berichtsserver zu replizieren? Daten in mainServer ändern sich häufig und aktuelle Informationen im ReportSever sind sehr wichtig.
Und es gibt viele Möglichkeiten, dies zu tun:
Gibt es dazu einige Best Practices? Danke
Sie benötigen Transaktionsreplikation für Ihren Fall. Hier ist, warum Sie die anderen 4 Fälle nicht benötigen würden:
Warum sollten Sie Transaktionsreplikation verwenden?
Gehen Sie Ihre Liste von oben nach unten durch.
Spiegelung : Wenn Sie Ihre Daten von Ihrem mainServer auf Ihren reportServer spiegeln, können Sie nicht auf Ihren reportServer zugreifen. Die Spiegelung versetzt die gespiegelte Datenbank in einen kontinuierlichen Wiederherstellungszustand . Spiegelung ist eine Hochverfügbarkeitslösung. In Ihrem Fall steht der reportServer nur zur Verfügung, wenn Sie einen Failover durchführen möchten. Der gespiegelte Server ist niemals betriebsbereit bis zum Failover. Dies ist nicht das, was Sie wollen, da Sie den reportServer nicht verwenden können, bis er betriebsbereit ist.
Protokollversand : Mit dem Protokollversand können Sie Transaktionsprotokollsicherungen für ein geplantes Ereignis auf den reportServer anwenden. Wenn Sie das Transaktionslog alle 15 Minuten sichern und die Daten auf den reportServer anwenden, haben Sie eine Verzögerung von mehr als 15 Minuten zwischen Ihrem mainServer und dem Log-Server. Die Spiegelung ist eigentlich der Echtzeit-Protokollversand. Je nachdem, wie Sie den Protokollversand eingerichtet haben, muss der Client die Verbindung trennen, während die Datenbank die Protokolldateien wiederherstellt. Während einer langen Wiederherstellung kann es daher unmöglich sein, Berichte zu verwenden. Der Protokollversand ist ebenfalls eine Funktion für hohe Verfügbarkeit und nicht wirklich nützlich für die Berichterstellung. In diesem Link finden Sie eine Beschreibung zum Versuch, auf eine Datenbank zuzugreifen, während sie versucht, Ссылка
Replikation : Ich stemple die Replikation hier zusammen. Durch die Replikation, insbesondere die Transaktionsreplikation, können Sie Ihre Berichtsanforderungen ausweiten. Es wäre in der Regel viel einfacher zu implementieren und auch Sie in der Lage, auf die Daten die ganze Zeit zu berichten, wo in Spiegelung Sie nicht über die Daten im Transaktionsprotokollversand berichten können Sie Lücken haben. In Ihrem Fall ist die Replikation also viel sinnvoller. Die Snapshot-Replikation wäre nützlich, wenn Ihre Berichte einen Tag alt sein könnten. Sie können jeden Morgen einen Snapshot der Daten erstellen, die Sie von mainServer benötigen, und diese Daten an den Abonnenten reportServer veröffentlichen. Wenn die Datenbank jedoch extrem groß ist, wird Snapshot täglich problematisch sein. Die Mergereplikation ist nur dann nützlich, wenn Sie die replizierten Daten aktualisieren möchten. In Ihrem Fall möchten Sie eine schreibgeschützte Kopie der zu reportierenden Daten haben, damit die Mergereplikation nicht hilft. Mit der Transaktionsreplikation können Sie Replikationen über die Leitung senden. In Ihrem Fall, in dem Sie häufig aktualisierte Informationen in Ihrem Berichtsserver benötigen, wäre dies äußerst nützlich. Ich würde diese Route wahrscheinlich für Sie vorschlagen.
Denken Sie daran, dass Sie durch die Implementierung des Replikations- / Spiegelungs- / Protokollversands mehr Wartungsarbeit leisten. Die Replikation kann fehlschlagen. So kann Spiegelung und so kann Transaktionsprotokollversand werden. Sie müssen diese Lösungen überwachen, um sicherzustellen, dass sie reibungslos funktionieren. Die Frage ist also, ob Sie Ihre Berichte wirklich auf einen anderen Server skalieren müssen oder ob Sie Zeit brauchen, um herauszufinden, warum Sie keinen Bericht auf dem Produktionsserver erstellen können.
Hoffe das hilft!
Tags und Links sql-server sql-server-2008-r2 replication