SSブログ

SQL Server レプリケーションの強制削除 [SQL Server]

SQL Server のデータ連係機能の1つにレプリケーションがあります。
レプリケーションはデータ配信のパブリッシャ、データ連係を司るディストリビュータ、
データを受け取るサブスクライバの3者が登場します。
これらの構成情報はデータベースの様々な場所に格納されています。

http://technet.microsoft.com/ja-jp/library/ms151198.aspx




テストをしていると構成がごちゃごちゃになって一端強制終了したいことがあります。
そのときにはGUIから操作するか、ストアドプロシージャを実行します。
しかし、状況によってはそれらの操作がエラーになることがあります。
それは構成を消すにしても構成情報が必要であり、検証などしていて構成情報が不正になって時に起きえます。
具体的にはディストリビュータシャットダウンしたような状態ではパブリケーションを消せません。

これを強制的に消すにはシステムストアドプロシージャを使います。
上記シナリオであればsp_droppublicationです。
http://technet.microsoft.com/ja-jp/library/ms188363.aspx

ここで引数に以下のものがあります。(抜粋します)

///////////////////ここから///////////////////
[ @ignore_distributor= ] ignore_distributor
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。
///////////////////ここまで///////////////////

このパラメータに1を積むと、ディストリビューションDBの存在を無視して強制的に削除ができます。
ただし、この場合はサブスクライバに情報が残ったままなので、そちらも消す必要があります。
つまり強制終了を行うに当たり、レプリケーションで何を消せばクリーンになるかをある程度
知っていない状態だとゴミが残ります。

EXEC sp_droppublication @publication = 'test', @ignore_distributor=1;

他にも同じようにsp_dropdistributor、sp_dropsubscriberがありますので
同様にignoreパラメータを使って消すことが可能です。
http://technet.microsoft.com/ja-jp/library/ms173516.aspx
technet.microsoft.com/ja-jp/library/ms187313.aspx


スポンサードリンク




nice!(2)  コメント(0)  トラックバック(0) 
共通テーマ:仕事

nice! 2

コメント 0

コメントを書く

お名前:[必須]
URL:[必須]
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。