2009-04-29 1 views
0

私は主キーとしてID列を持つテーブルを持っています。この時点でテーブルのデータは重要ではないので、すべて削除することができますが、intからbigintに列を変更し、可能な限り最大の範囲を与えるためにbigint.minvalueに再配置します値。 レプリケーションを再構築したり、サブスクライバを変更したりせずに、これを実行したいと思います。SQL SVR 2005のマージレプリケーションソースであるテーブルのPK列を変更する正しい手順は何ですか?

私は

alter table MyTable 
    alter column MyTableId bigint not null 

を実行すると、私はエラーを取得:

Msg 5074, Level 16, State 1, Line 5 
The object 'repl_identity_range_CEEB13F5_11D2_435C_BE5D_EBF91EBF8DE7' is dependent on column 'MyTableId'. 
Msg 5074, Level 16, State 1, Line 5 
The object 'PK_MyTable' is dependent on column 'MyTableId'. 
Msg 4922, Level 16, State 9, Line 5 
ALTER TABLE ALTER COLUMN MyTableId failed because one or more objects access this column. 

答えて

1

あなたが周りにデータをプッシュするために使用されるシステムのその一部としてパブリッシュされたテーブルの主キーを変更傾けます。したがって、パブリケーションからテーブルを削除してください。変更を加えて再公開します。

あなたがあなたのテーブルを作るsp_droparticleにhttp://msdn.microsoft.com/en-us/library/ms173832.aspx

を使用して、テーブルを削除することができます/あなたの鍵は

が最後にhttp://msdn.microsoft.com/en-us/library/ms174329.aspx

+0

に戻って、それを追加するためにsp_addmergearticleを使用する変更は、からそれを削除することはできませんように見えますsp_droparticleのリンクに従ってサブスクリプションが存在する場合は、公開してください。 ありがとうございます。 – Zack

+0

記事をパブリケーションから削除して変更しました。それを元に戻しました。加入者はスナップショットから再初期化しなければならない。 – Zack

+0

優れている、少数のサブスクライバとその小さなデータベースを願っ:) – u07ch

関連する問題