web-dev-qa-db-ja.com

レプリケーションの同期に失敗しました。 ID範囲外のパブリッシャー

SQL2005パブリッシャー/ディストリビューターと約100のSQL2005Expressサブスクライバーを使用してマージレプリケーションを設定しました。すべてが数か月間正常に機能していましたが、突然、すべての人が以下のエラーを受け取りました。

私はぐるぐる回っていましたが、役に立ちませんでした。誰かがいくつかの洞察を提供できますか?ユーザーのサブスクリプションを削除してみました。私も走ってみました->

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
3

まず、マシンに少なくともService Pack 3のパッチが適用されていますか?このエラーは、Service Pack 2 Cumulative Update4で修正されたバグによってスローされることがよくありました。ここから始めることができます。

パッチが適用されている場合は、次にID列のデータ型を確認します。たとえば、それらが現在INTであり、発行元が最大INT値(2,147,483,647)を超える範囲を割り当てようとしている場合、そのエラーが発生します。 IDフィールドをBIGINTに変更することで解決できます。サブスクライバーが100人の場合、パブリッシャーは多数の範囲を割り当てる必要があるため、これが発生する可能性があります。

お役に立てれば。

2
Brian Knight