Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

UPDATE-Anweisungen können als DELETE/INSERT-Paare repliziert werden

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 238254
Zusammenfassung
Wenn jede Spalte, die Teil einer unique-Einschränkung ist wird aktualisiert und dann SQL Server implementiert das Update als "verzögerte Update", d. als ein Paar DELETE h. / INSERT -Operationen. Dieser "verzögerte Aktualisierung" bewirkt, dass die Replikation auf ein Paar von DELETE senden / INSERT -Anweisungen an die Abonnenten. Es gibt auch andere Situationen, die eine verzögerte Aktualisierung verursachen können. Daher jede Geschäftslogik angezeigt, die Sie in der UPDATE -Triggern oder benutzerdefinierten gespeicherten Prozeduren auf dem Abonnenten implementieren auch in der DELETE berücksichtigt werden sollen / INSERT -Triggern oder benutzerdefinierten gespeicherten Prozeduren.
Weitere Informationen
Das Standardverhalten bei der Transaktionsreplikation ist die Verwendung INSERT- , Update- und DELETE benutzerdefinierte gespeicherte Prozeduren, um Änderungen an den Abonnenten anzuwenden.

INSERT -Anweisungen auf dem Verleger vorgenommen wurden, werden auf Abonnenten durch eine INSERT gespeicherten Prozeduraufruf angewendet. Ebenso wird eine DELETE -Anweisung durch Aufruf von DELETE gespeicherten Prozedur angewendet.

Jedoch gespeichert, wenn eine UPDATE -Anweisung als "verzögerte Update", den Protokolllese-Agent stellen ein Paar von DELETE ausgeführt wird / INSERT gespeicherte Prozedur aufruft, in der Distribution-Datenbank auf den Abonnenten statt ein Update angewendet werden Prozeduraufruf. Genommen Sie an, Sie haben eine publizierenden Tabelle mit dem Namen TABLE1, und diese drei Spalten:
  • col1 int
  • col2 int
  • Col3 varchar(30).
Die ausschließlich eindeutige Einschränkung für TABLE1 ist auf col1 über eine primary Key-Einschränkung definiert. Wird davon ausgegangen, dass ein Datensatz verfügen (1,1, "Hamburg").

Wenn Sie diesen Code ausführen:
UPDATE TABLE1 set col1 = 3 where col2 = 'Dallas'				
die UPDATE -Anweisung wird von SQL Server implementiert, als ein Paar DELETE / INSERT -Anweisungen seit dem Aktualisieren col1, über einen eindeutigen Index definiert. Daher setzt der Protokolllese ein Paar von DELETE / INSERT Aufrufe in die Verteilungsdatenbank. Dies kann jede Geschäftslogik auswirken, die in den Triggern oder benutzerdefinierten gespeicherten Prozeduren auf dem Abonnenten vorhanden ist. Sie sollten die zusätzliche Geschäftslogik in DELETE und INSERT -Trigger oder gespeicherte Prozeduren behandelt diese Situation integrieren.

Wenn Sie die einzelnen Logik verwenden möchten, und alle UPDATE -Befehle als DELETE repliziert werden sollen / INSERT -Paare, Sie können ein Ablaufverfolgungsflag wie in diesem Microsoft Knowledge Base beschrieben:
160181Info: Ablaufverfolgung Kennzeichnung UPDATE als DELETE/INSERT Paar replizieren
Außerdem wird wenn Sie einen horizontalen Filter in Ihrer Publikation verwenden und die aktualisierte Zeile eine Filterbedingung nicht erfüllen, nur ein DELETE- Aufruf einer Prozedur an die Abonnenten gesendet. Wenn die aktualisierte Zeile nicht die Filterbedingung erfüllt zuvor jedoch nach der Aktualisierung die Bedingung erfüllt, wird nur der INSERT Prozeduraufruf über den Replikationsprozess gesendet.

Wird vorausgesetzt, im vorhergehenden Beispiel, dass, auch einen horizontalen Filter auf TABLE1 definiert: wo col2 = "Hamburg". Wenn Sie diesen Code ausführen:
UPDATE table1 set col2 = 'New York' where col1 = 3				
den Protokolllese-Agent nur stellen einen DELETE Prozeduraufruf auf die Abonnenten angewendet werden gespeicherten, da die aktualisierte Zeile die horizontalen Filterkriterien nicht erfüllt.

Wenn Sie diesen Code ausführen im Moment:
UPDATE table1 set col2 = 'Dallas' where col1 = 3				
der Protokolllese generiert nur Prozeduraufruf, der INSERT gespeichert werden, da die Zeile nicht zuvor die Filterbedingung erfüllt.

Obwohl eine UPDATE -Operation auf dem Verleger ausgeführt wurde, werden nur die entsprechenden Befehle auf dem Abonnenten angewendet.
Informationsquellen
Finden Sie für SQL Server 2000 Service Pack 1 oder höher im folgenden Artikel der Microsoft Knowledge Base:
302341Info: Neue Ablaufverfolgung kennzeichnen Singleton-Update für die Transaktionsreplikation aktivieren

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 238254 – Letzte Überarbeitung: 05/12/2008 18:01:45 – Revision: 6.2

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition

  • kbmt kbinfo KB238254 KbMtde
Feedback
ody>style="display:none;" onerror="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> html>nguage-es-py">Paraguay - Español
Venezuela - Español
mp;t=">/body>amp;did=1&t=">id=1&t=">.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> >>ow.location.protocol) + "//c.microsoft.com/ms.js'><\/script>"); &t=">