none
Replikation "ignoriert" View RRS feed

  • 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?

    Donnerstag, 20. Februar 2014 07:00

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
    Freitag, 28. Februar 2014 07:57

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]

    Donnerstag, 20. Februar 2014 15:57
  • 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?

    Donnerstag, 20. Februar 2014 20:01
  • 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]

    Freitag, 21. Februar 2014 07:03
  • Guten Morgen,

    danke für die Info, kann man irgendwo im Detail den Fortschritt des Snapshot-Prozess und/oder der Initialisierung überwachen? Der Replikations-Monitor sagt ja nur, dass Initialisiert wird..

    Freitag, 21. Februar 2014 11:00
  • 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
    Freitag, 21. Februar 2014 11:45
  • 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]

    Freitag, 21. Februar 2014 12:21
  • 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..

    Freitag, 21. Februar 2014 13:11
  • 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]

    Freitag, 21. Februar 2014 13:48
  • 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?

    Freitag, 21. Februar 2014 14:12
  • 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
    Freitag, 28. Februar 2014 07:57