Frage

Wir haben ein Problem mit einem Mergereplikation. Unser Verlag führt SQL Server 2008, während unsere beiden Teilnehmer laufen 2005. Unser Verlag versucht, ein ALTER TABLE Foo SET (LOCK_ESCALATION) Befehl auszusenden an unsere Abonnenten. Ich glaube, ich erinnere mich, dass dieser Befehl in SQL Server neu ist 2008, und wenn ja, ist es sinnvoll, dass der Befehl auf unserem 2005-Server fehlschlagen würde. Unsere Mergereplikation wird für das Jahr 2005 Kompatibilität eingerichtet, jedoch.

  

Das Schema Skript 'wenn object_id (N' [dbo]. [Benutzer] ') ist nicht null exec (' ALTER TABLE [dbo]. [Benutzer] SET (LOCK_ESCALATION = TABLE)   ‚)‘ Nicht an den Teilnehmer weitergegeben werden könnten.

Alle Ideen, warum unser Verleger, dies zu tun wäre versuchen?

Edit: Unser 2008-Servers Kompatibilitätsgrad wird auf "SQL Server 2005 (90)"

War es hilfreich?

Lösung

Es ist ein neues Feature in SQL 2008 so im Jahr 2005 nicht unterstützt Je nachdem, wie komplex Ihre Einrichtung ist Sie kann laufen Ihre Datenbank zu prüfen, in der Kompatibilität 90 (SQL 2005), um sicherzustellen, Sie SQL 2008 Funktionen Ihren hinzufügen nicht Datenbank. Haben Sie sich jemals große Probleme mit der Replikation von Schemadaten hat da es sich um so immer ein bisschen zurückhaltender kam. Ich versuche immer, und mache es dumm handeln und nur Daten verwalten -. Hatte ein Merge-System mit 32 Teilnehmern mit Mergereplikation zu unterstützen und hatte großes Schema Probleme ständig, wenn wir Schemaänderungen gedrückt

Das heißt, wenn es als dokumentiert arbeitet, sollte es nicht schieben Ihre Sperre ändern versuchen. Überprüfen Sie die Abonnements werden als SQL 2005 kompatibel markiert. Sein wahrscheinlich, dass sie nicht eine Auto-Karte der Einstellung von 2008 bis 2005 in der Art, wie sie für die Datentypen haben erstellt (zum Beispiel)

Einer der SQL dev Jungs gebloggt auf den neuen Verriegelungsarten eine Weile zurück

Andere Tipps

Dies geschieht, weil die Unvereinbarkeit dieser Anweisung mit SQL Server 2005 und aparently, wenn ich eine Schemaänderung zu tun in einer Tabelle, die Puts diese Anweisung in den Schemaänderungen repliziert.

Es gibt zwei Möglichkeiten: Entfernen Sie und erstellen Sie erneut das ABONNEMENT, nicht anwendbar, wenn es in Produktionsserver ist. Zweite Weg ist, gehen Sie zu sysmergeschemachange Tabelle in der Datenbank und löschen Sie die Zeile, die so etwas wie dieses hat:

  

Das Schema Skript ‚, wenn   object_id (N '[dbo]. [Benutzer]') ist nicht   null exec ( 'ALTER TABLE [dbo]. [Benutzer]   SET (LOCK_ESCALATION = TABLE) ')'   konnte nicht an die propagiert werden   Abonnenten.

Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top