For ALL tables containing an Identity column…. You should define the Publisher /
Subscriber ranges. In some tables the default will work, but they should be reviewed.
Adjust the Publisher and Subscriber Range sizes for all table columns that are
IDENTITY. There can be only 1 Identity column per table.
Range Sizes
- Publisher Range Size
Make this large enough to handle current record count PLUS room for enough future
growth until the next time you break replication. For example there are approximately
94,000 rows in tblAPD_WorkFlow_History. I would set the Publisher range size to
2,000,000. The top limit is around 1 billion for identity columns of integer types so this
shouldn’t present a problem at all for this table. The default is 10,000. Every table must
be evaluated separately and precisely.
- Subscriber Range Size
Make this one large enough to handle what a subscriber needs for inserting records
BETWEEN synchronizations. For this particular table no subscribers insert into this
table, so I would leave it at the default of 1000.
We didn’t realize the Publisher Range Size worked this way… thinking that Publisher
simply had a larger range given out during synchronization… so we didn’t make the
range large enough for a handful of tables and thus we have gone over the Publisher
Range Size with the current record count. What has happened seems to be the Publisher
(server) now acts as a Subscriber as to the Range Size (1,000), and it doesn’t update by
itself when it gets above the threshold percentage, since it doesn’t ever synchronize.
Upon extensive research, and trial and error, 2 ways for the publisher to get its ranges
reset once it reaches it top side. Either a Merge agent runs, or the user that is inserting
the record is a dbo. Since the ranges are reviewed for each subscriber when they
synchronize (via the merge agent running), they are all take care of. Since the merge
agent doesn’t run on the publisher side, this doesn’t get reviewed automatically. So when
someone connected directly to the server for this particular table
(tblAPD_WorkFlow_History), when the 1,000 ranges maximum value is reached, the
user will get the following error: