Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

MS SQL Server Forum


Alles zum Thema Microsoft SQL Server — Q & A zu Microsoft SQL Server 2000 / 2005 / 2008 Architektur, Konfiguration, Troubleshooting


Antwort
     
Themen-Optionen
Alt 09.09.2011, 15:11   #1
Newbie
 
Offline
Registriert seit: 09-2011
Beiträge: 4
MsSQL 2005, Merge Replikation, Aktualisierung des ID ranges

Hallo zusammen,

ich habe schon recht umfangreich nach meinem Problem gegoogelt und viele Hinweise aber keine Lösung gefunden.

Suchbegriff: "The Publisher failed to allocate a new set of identity ranges for the subscription"

Wir verwenden MsSQL 2005 SP3 mit Merge Replikation auf mehrere Rechner. Die Tabellen verwenden alle einen Spalte ID vom Typ Int die wie folgt deklariert ist:
  • Datentyp int
  • (Ist Identity) Ja
  • ID-Ausgangswert 1
  • ID-Inkrement 1
  • Nicht für Replikation Ja
und zusätzlich eine Spalte RowGUID

Mit
Code:
select * from MSmerge_identity_range
order by next_range_end desc
kann man schön erkennen welche ID-Ranges vergeben worden sind. In unserem Beispiel steht
  • range_begin 5693228
  • range_end 5694228
  • next_range_begin 5697228
  • next_range_begin 5698228

Normalerweise hätte ich erwartet, dass MsSQL mit der ID automatisch in next_range weitermacht, wenn der erste Range aufgebraucht ist. Tatsächlich kommt aber eine Fehlermeldung sobald man mehrere neue Datensätze anlegt und dabei range_end überschreitet.
Der Anwender bekommt den Fehler
Fehler beim Einfügen. Es lag ein Konflikt mit einer Einschränkung für die Identitätsbereichsüberprüfung in der YYY-Datenbank in der replizierten Tabelle XXX vor. Falls die Identitätsspalte automatisch von der Replikation verwaltet wird, aktualisieren Sie den Bereich wie folgt: Führen Sie sp_adjustpublisheridentityrange für den Verleger und den Verteilungs-Agent oder den Merge-Agent für den Abonnenten aus.
In der nächsten Replikation steht im Protokoll die Meldung
The Publisher failed to allocate a new set of identity ranges for the subscription. This can occur when a Publisher or a republishing Subscriber has run out of identity ranges to allocate to its own Subscribers or when an identity column data type does not support an additional identity range allocation. If a republishing Subscriber has run out of identity ranges, synchronize the republishing Subscriber to obtain more identity ranges before restarting the synchronization. If a Publisher runs out of identit (Quelle: MSSQL_REPL, Fehlernummer: MSSQL_REPL-2147199417)
Hilfe abrufen: http://help/MSSQL_REPL-2147199417
Fehler beim Konvertieren des nvarchar-Datentyps in numeric. (Quelle: MSSQLServer, Fehlernummer: 8114)
Hilfe abrufen: http://help/8114
Keine Ahnung was der Hinweis "...Konvertierung des nvarchar...", denn ID ist sicher Int und RowGuid uniqueidentifier.

Bevor man nun die Stored procedure sp_adjustpublisheridentityrange aufruft, müssen erst alle Anwender die DB verlassen. Sobald sp_adjustpublisheridentityrange dann ausgeführt ist. Klappt Neuvergabe und Replikation wieder einwandfrei. Bis das Bandende wieder erreicht ist.

Was mach ich falsch oder was läuft hier falsch?

Vielen Dank für jegliche Unterstützung
Gerd
    Mit Zitat antworten
Alt 21.11.2011, 20:29   #2
Newbie
 
Offline
Registriert seit: 09-2011
Beiträge: 4
Hat keiner einen Ratschlag? Ich habe mittlerweile auf MsSQL 2008 R2 upgedatet, aber auch das brachte keine Verbesserung. Dann habe ich den Range auf 10000 erhöht, trotzdem wird das Band in 1000 Schritten vergeben. Einfach zum Verzweifeln.
Das seltsame ist, dass z.B. der Sprung von Band1 in Band2 funktioniert solange keine Abonnent aktiv ist. Sobald ich einen Abonnenten aktiviere, kommt obige Meldung schon wenn Band1 voll ist
    Mit Zitat antworten
Alt 16.01.2012, 21:18   #3
Newbie
 
Offline
Registriert seit: 09-2011
Beiträge: 4
Das Problem besteht leider immer noch. Wirklich kein Lösungsvorschlag vorhanden
    Mit Zitat antworten
Alt 21.01.2012, 18:00   #4
Newbie
 
Offline
Registriert seit: 09-2011
Beiträge: 4
Nach tagelangen Tests an der MsSQL-DB und meinem Programm habe ich durch die Überwachung des SQL-Verkehrs per MsSQL Profiler den Fehler gefunden.
Wenn man in der TUniQuery-Komponente von UniDac V4.1.3 für Delphi
Code:
FetchAll = false
setzt und diese TUniQuery später in einer anderen TUniQuery als MasterSource angibt, wird ein großer Teile der Transaktionen so durchgeführt.
Code:
Audit Login
SQL:BatchStarting
SQL:BatchCompleted
RPC:Completed
Audit Logout
Das laufende Audit Login .. Audit Logout blockiert dann den Wechsel in den nächsten ID-Range.

Falls also jemand mit UniDac arbeitet und ein ähnliches Problem hat mal anschauen.

Grüße
Gerd
    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MSSQL 2005 + MSSQL 2005 Express zusammen auf einem Server nauralos MS SQL Server Forum 2 31.01.2011 22:56
Mcitp-mssql 2005 dba JoergF MS Zertifizierungen — Allgemein 1 01.04.2010 22:00
Import von XML in MSSQL 2005 doeme MS SQL Server Forum 10 26.09.2008 16:40
MSSQL Server 2005 Gastkonto Testsoftware & Bücher 0 08.12.2007 16:46
sql 2005 und mobile sql 2005 merge replication corridriver Windows Forum — Allgemein 0 04.02.2006 20:31


Alle Zeitangaben in MEZ/CET. Es ist jetzt 20:56 Uhr. Seite generiert in 0,032 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang