- 締切済み
IDENTITY列の更新で失敗する
Win2003Server SQLServer2005 マージレプリケーションで構成されたあるテーブルに 一括でデータを挿入しようとしてエラーが発生しています。 テーブルの1つの列がIDENTITYが設定されており、 この範囲を超えたからという理由らしいのですが・・・ この範囲以上の行を一括挿入するにはどのように 設定を変更すれば良いでしょうか? ※sp_changemargearticleで変更するのかな?とは思ったのですが、 パラメータに何を指定して良いかが分からず ※必要な情報があれば、補足等に随時書込みさせていただきます。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- x0000x
- ベストアンサー率52% (67/127)
ID 値は以下の方法で管理できます。 ・Microsoft® SQL Server™ 2000 レプリケーションで、ID 値の範囲をパブリッシャおよび全サブスクライバに動的に割り当てて、ID 列を自動的に管理できるようにする。 ・Transact-SQL の NOT FOR REPLICATION オプションで ID 列を定義する。 ・ID 列が不要な場合、複合キーや rowguid 列など ID 列以外の主キーを使用する。この方式では、レプリケートされたデータの ID 列を管理するオーバーヘッドをなくすことができます。 上記の詳細は以下のサイトを参照ください。 http://msdn.microsoft.com/library/ja/
- x0000x
- ベストアンサー率52% (67/127)
>テーブルの1つの列がIDENTITYが設定されており、 >この範囲を超えたからという理由らしいのですが・・・ 値を超過させない様にします。 つまり、IDENTITYの設定された列の桁数を増加させ、値超過が発生しない桁数に設定すれば良いと思います。 マージレプリケーション環境では、レプリケーション環境を解除した後に、テーブルカラムを変更する必要があったと思います。
補足
回答ありがとうございます。 ご指摘の列の桁数なのですが、足りているのです。 が、マージレプリケーションを設定した際に制約(二つのサーバーで同じ値が設定されないようにらしい)が付加されてしまい、 この制約に違反してしまうのです。