У меня настроена репликация слиянием с издателем / распространителем SQL 2005 и примерно 100 подписчиками SQL 2005 Express. Все работало нормально в течение нескольких месяцев, и теперь внезапно все получают следующие ошибки.
Я гуглил, но безрезультатно. Может ли кто-нибудь подсказать? Я даже пытался удалить подписку пользователя. Я тоже пробовал бежать ->
sp_adjustpublisheridentityrange @publication='MyDB'
Во всяком случае, вот ошибки ->
Error messages:
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 (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147199417)
Get help: http://help/MSSQL_REPL-2147199417
Not enough range available to allocate a new range for a subscriber. (Source: MSSQLServer, Error number: 20668)
Get help: http://help/20668
Failed to allocate new identity range. (Source: MSSQLServer, Error number: 21197)
Get help: http://help/21197
Во-первых, установлены ли на ваши машины исправления хотя бы с Service Pack 3? Эта ошибка часто возникает из-за ошибки, исправленной в накопительном обновлении 4 для пакета обновления 2 (Service Pack 2 Cumulative Update 4). С этого можно начать.
Если вы все исправили, я бы затем проверил тип данных ваших столбцов идентификации. Например, если они в настоящее время являются INT, а издатель пытается выделить диапазон, превышающий максимальное значение INT (2 147 483 647), вы получите эту ошибку. Вы можете решить эту проблему, изменив поле своей личности на BIGINT. Имея 100 подписчиков, вашему издателю пришлось выделить большое количество диапазонов, так что это вполне вероятно.
Надеюсь это поможет.