sp_repldropcolumn (Transact-SQL)
パブリッシュされた既存のテーブル アーティクルから列を削除します。このストアド プロシージャは、パブリッシャ側でパブリケーション データベースについて実行されます。
重要 |
---|
このストアド プロシージャは、主に旧バージョンとの互換性のためにサポートされており、使用は推奨されません。Microsoft SQL Server 2000 パブリッシャと SQL Server 2000 の再パブリッシュ サブスクライバでのみ使用してください。SQL Server 2005 または SQL Server 2008 で導入されたデータ型の列に対してこのプロシージャを使用しないでください。 |
構文
sp_repldropcolumn [ @source_object = ] 'source_object', [ @column = ] 'column'
[ , [ @from_agent = ] from_agent ]
[ , [ @schema_change_script = ] 'schema_change_script' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
引数
[ @source_object = ] 'source_object'
削除する列が含まれるテーブル アーティクルの名前を指定します。source_object のデータ型は nvarchar(258) で、既定値はありません。[ @column = ] 'column'
テーブル内の削除する列の名前を指定します。column のデータ型は sysname で、既定値はありません。[ @from_agent = ] from_agent
ストアド プロシージャがレプリケーション エージェントにより実行されているかどうかを示します。from_agent のデータ型は int で、既定値は 0 です。このストアド プロシージャがレプリケーション エージェントにより実行されている場合は値 1 が、それ以外のすべて場合は既定値 0 が使用されます。[ @schema_change_script = ] 'schema_change_script'
システム生成カスタム ストアド プロシージャを修正するための SQL Server スクリプトの名前とパスを指定します。schema_change_script のデータ型は nvarchar(4000) で、既定値は NULL です。レプリケーションでは、トランザクション レプリケーションで使用される 1 つ以上の既定のプロシージャを、ユーザー定義カスタム ストアド プロシージャに置き換えることができます。sp_repldropcolumn でレプリケートされたテーブル アーティクルに対してスキーマが変更された場合、その後に schema_change_script を実行して次のいずれかを行えます。カスタム ストアド プロシージャが自動的に再生成される場合、schema_change_script を使用してこれらのカスタム ストアド プロシージャを削除し、新しいスキーマをサポートするユーザー定義カスタム ストアド プロシージャで置き換えることができます。
カスタム ストアド プロシージャが自動的に再生成されない場合、schema_change_scriptを使用してこれらのストアド プロシージャを再生成するか、ユーザー定義カスタム ストアド プロシージャを作成できます。
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
スナップショットを無効にする機能を有効または無効にします。force_invalidate_snapshot のデータ型は bit で、既定値は 1 です。1 に設定すると、アーティクルへの変更によってスナップショットが無効になることがあります。この場合、値 1 では新しいスナップショットを作成する権限が与えられます。
0 に設定すると、アーティクルへの変更によってスナップショットが無効になることはありません。
[ @force_reinit_subscription = ] force_reinit_subscription
サブスクリプションを再初期化する機能を有効または無効にします。force_reinit_subscription のデータ型は bit で、既定値は 0 です。0 に設定すると、アーティクルへの変更によってサブスクリプションが再初期化されることはありません。
1 に設定すると、アーティクルへの変更によってサブスクリプションが再初期化されることがあります。この場合、値 1 ではサブスクリプションを再初期化する権限が与えられます。
戻り値
0 (成功) または 1 (失敗)
説明
sp_repldropcolumn の使用は推奨されません。レプリケートされるテーブル アーティクルから列を削除する場合は、パブリッシュされるテーブルに対してデータ定義言語 (DDL) コマンドを実行してください。DDL レプリケーションが有効であれば、レプリケーション時にこれらの DDL コマンドは自動的にレプリケートされます。詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。
sp_repladdcolumn は、以前のバージョンの Microsoft SQL Server 2000 サブスクライバで実行されている再パブリッシュ サブスクライバから DDL 変更を配布する場合に必要となります。
sp_repldropcolumn は、すべての種類のレプリケーションで使用できます。
sp_repldropcolumn を使用するとき、データ変換サービス (DTS) パッケージを使用するパブリケーションに属するアーティクルにスキーマの変更が加えられる場合は、スキーマの変更はサブスクライバに通知されません。また、INSERT/UPDATE/DELETE のカスタム プロシージャがサブスクライバ上で再生成されることもありません。ユーザーは DTS パッケージを手動で再生成し、サブスクライバ側で対応するスキーマの変更を行う必要があります。スキーマの更新が適用されない場合、ディストリビューション エージェントでは以降の変更を適用できない可能性があります。スキーマの変更を行う前には、配信が保留されているトランザクションが存在しないことを確認してください。
重要 |
---|
パブリケーション データベースのバックアップは、sp_repldropcolumn を実行した後に実行してください。先にバックアップを実行すると、パブリケーション データベースの復元後にマージが失敗する可能性があります。 |
権限
sp_repldropcolumn を実行できるのは、パブリッシャ側の sysadmin 固定サーバー ロールのメンバ、またはパブリケーション データベースの db_owner 固定データベース ロールや db_ddladmin 固定データベース ロールのメンバだけです。