Benutzer mit den meisten Antworten
Replikation "ignoriert" View

Frage
-
Hallo,
ich habe eine Haupt/Live-Datenbank DB auf Server SQL1, dieser repliziert diese Datenbank über eine lokale Publikation auf Server SQL2 in die Datenbank DB_Replik.
Jetzt tritt aber das Problem auf, dass wenn ich Änderungen an einer View in SQL1\DB mache (oder eine neue View anlege), diese View nicht mit nach SQL2\DB_Replik übertragen wird.
In den Einstellungen der Replikation sind diese Views aber mit drin, der Monitor zeigt auch, dass alles schick repliziert.
Wieso werden die Views ignoriert und wie kann ich das beheben?
Antworten
-
Hallo,
danke, mittlerweile konnte ich es hinbekommen. Was ich gelernt habe ist folgendes:
- Änderungen an bereits replizierten Views werden auch ohne Snapshot übertragen
- neue Views werden nur in die Replik übertragen, wenn ich sie explizit unter "Articles" aufnehmen und dann den Snapshot-Agent starte - hierbei gehen dann auch keine Daten verloren außer man ist so dusselig wie ich und fordert eine neue Initialisierung an
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Montag, 3. März 2014 07:37
Alle Antworten
-
ich Änderungen an einer View in SQL1\DB mache (oder eine neue View anlege), diese View nicht mit nach SQL2\DB_Replik übertragen wird.
Hallo Philipp,
welche Replikationsart hast, Snapshot oder eine andere?
Neue Objekte wie Tabellen / Views werden nicht automatisch in die Replikation mit aufgenommen, dazu müsste ja auch zunächst einmal bei der Merge/Transaktionsreplikation ein neues Snapshot erstellt und verteilt werden.
Du musst also schon in der Puklikation manuell definieren, welche "Artikel" = Tabelle / View veröffentlicht werden soll.
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Andreas.WolterMicrosoft employee Freitag, 21. Februar 2014 19:12
-
Hallo,
OK, das erklärt erstmal wieso es initial nicht klappt. habe die View(s) aber als "Article" hinzugefügt und auch nach 24 Stunden waren sie nicht in der Replik - nebenbei: Transaktions-Replizierung.
Jetzt habe ich einen neuen Snapshot erstellt, der läuft seit 6 Stunden rüber - ist das eine normale Dauer um eine neue View rüber zu bringen?
-
Ein Snapshot beinhaltet "alles", was per Publikation repliziert werden soll, das heisst es sind dort wieder alle replizierten Tabellen mit allen Daten enthalten; nicht nur die neu hinzugefügten Artikel. Je nach Datenmenge kann das durchaus dauern, dazu kommt die Übertragung zu allen Abonnenten etc.
Olaf Helper
[ Blog] [ Xing] [ MVP] -
Eine weitere Frage, bei der ich etwas (nun sagen wir mal ) verwirrt bin. Auf der einen Seite schreibt Microsoft, dass Befehle wie "CREATE TABLE" oder "CREATE VIEW" mit über eine Transaction-Replikation übertragen werden, in meinem Verständnis bedeutet das also, dass wenn ich im Publisher eine VIEW erstelle, diese auch in der Replik erstellt wird.
Auf der anderen Seite jedoch muss ich "Article" hinzufügen und steuere somit, was in meiner Replik drin ist.
Muss ich nun nach jeder Erstellung/Veränderung einer View eine neue Replik machen, oder sollten diese automatisch übertragen werden? Besonders "problematisch" wäre, wnn ich jedesmal einen neuen Snapshot brauche, dass die Replik dann für mehrere Stunden unbenutzbar ist, weil während des Snapshot-Einspielens alle Daten weg sind..
- Bearbeitet PhilippR Freitag, 21. Februar 2014 12:54
-
Auf der einen Seite schreibt Microsoft, dass Befehle wie "CREATE TABLE" oder "CREATE VIEW" mit über eine Transaction-Replikation übertragen werden,
Werden sie auch, aber anders als Du es interpretierst: Bei der Replikation werden Neuanlage von Objekten nicht mit protokollierst und wie bereits gesagt nicht automatisch mit aufgenommen, das musst Du manuell konfigurieren.
Sieh' mal im Installationsordner Deiner SQL Server Instanz nach, dort gibt es einen Unterordner
..\REPLDATA\unc\<Name der Publikation>\<Timestamp des Snapshots>\
dort findest Du *.sch Dateien; diese enthalten die CREATE TABLE Statement zur Anlage der replizierten Artikel auf der Abonnenten-Datenbank; die sind damit gemeint. Diese ganzen Dateien werden mit dem Snapshot eben übertragen.Olaf Helper
[ Blog] [ Xing] [ MVP] -
Hallo Olaf,
danke für die Erklärung, das ergibt dann allerdings Sinn. :-)
Was ist denn dann die Best-Practise, um eine neue View/Table in eine Replik zubekommen? Mittels Snapshot (über Snapshot Agent) werden ja alle Tabelle geleert und die Replik ist für den Zeitraum der Synchronisation (4-8 Stunden) nicht zu gebrauchen..
-
Veränderung einer View eine neue Replik machen
Zu dem Thema siehe am besten Make Schema Changes on Publication Databases; da gibt es einige Punkte zu beachten.
Wenn der Großteil oder gar alle Tabellen repliziert werden und der Datenbestand groß ist, ist es meistens besser, ein Backup der Datenbank auf dem Abonnenten wiederherzustellen; siehe Initialize a Transactional Subscription Without a Snapshot => Initializing a subscription with a backup
Olaf Helper
[ Blog] [ Xing] [ MVP] -
Ah OK, habe jetzt auch mal noch was probiert; nur zum Verständnis (und damit ich nix falsch verstehe):
- wenn ich den Snapshot-Agent starte, bleiben alle Daten und alle Schemenänderungen (neue/geänderte Views/Tables) werden übertragen - dauert ein paar Sekunden
- wenn ich eine Subscription mit "Re-Initialize Subscription" markiere und dann den Snapshot-Agent starte, wird die DB geleert und dann alles neu erstellt
Heißt, dass wenn ich ne neue View haben will, ich die einfach im Master anlege und dann den Snapshot-Agent laufen lassen kann, korrekt?
-
Hallo,
ist die Thematik noch aktuell?
Gruss,
RaulRaul Talmaciu, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Hallo,
danke, mittlerweile konnte ich es hinbekommen. Was ich gelernt habe ist folgendes:
- Änderungen an bereits replizierten Views werden auch ohne Snapshot übertragen
- neue Views werden nur in die Replik übertragen, wenn ich sie explizit unter "Articles" aufnehmen und dann den Snapshot-Agent starte - hierbei gehen dann auch keine Daten verloren außer man ist so dusselig wie ich und fordert eine neue Initialisierung an
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Montag, 3. März 2014 07:37