sp_register_custom_scripting (Transact-SQL)
適用対象: SQL Server
レプリケーションを使用すると、トランザクション レプリケーションで使用される 1 つ以上の既定のプロシージャを、ユーザー定義のカスタム ストアド プロシージャで置き換えることができます。 レプリケートされたテーブルにスキーマ変更が行われると、これらのストアド プロシージャは再作成されます。
sp_register_custom_scripting
は、新しいユーザー定義カスタム ストアド プロシージャの定義をスクリプト化するためにスキーマの変更が発生したときに実行されるストアド プロシージャまたは Transact-SQL スクリプト ファイルを登録します。 この新しいユーザー定義カスタム ストアド プロシージャには、テーブルに対する新しいスキーマを反映する必要があります。 sp_register_custom_scripting
はパブリッシャー側のパブリケーション データベースで実行され、スキーマの変更が発生すると、登録済みのスクリプト ファイルまたはストアド プロシージャがサブスクライバーで実行されます。
構文
sp_register_custom_scripting
[ @type = ] 'type'
, [ @value = ] N'value'
[ , [ @publication = ] N'publication' ]
[ , [ @article = ] N'article' ]
[ ; ]
引数
[ @type = ] 'type'
登録されているカスタム ストアド プロシージャまたはスクリプトの種類。 @type は varchar(16)であり、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
insert |
登録されたカスタム ストアド プロシージャは、 INSERT ステートメントがレプリケートされるときに実行されます。 |
update |
登録されたカスタム ストアド プロシージャは、 UPDATE ステートメントがレプリケートされるときに実行されます。 |
delete |
登録されたカスタム ストアド プロシージャは、 DELETE ステートメントがレプリケートされるときに実行されます。 |
custom_script |
スクリプトは、データ定義言語 (DDL) トリガーの最後に実行されます。 |
[ @value = ] N'value'
登録されている Transact-SQL スクリプト ファイルへのストアド プロシージャまたは名前と完全修飾パスの名前。 @value は nvarchar(2048) で、既定値はありません。
@valueのNULL
を指定すると、以前に登録されたスクリプトが登録解除されます。これは、sp_unregister_custom_scriptingの実行と同じです。
@typeの値がcustom_script場合、Transact-SQL スクリプト ファイルの名前と完全なパスが必要です。 それ以外の場合、 @value は登録済みのストアド プロシージャの名前である必要があります。
[ @publication = ] N'publication'
カスタム ストアド プロシージャまたはスクリプトが登録されているパブリケーションの名前。 @publication は sysname で、既定値は NULL
です。
[ @article = ] N'article'
カスタム ストアド プロシージャまたはスクリプトが登録されているアーティクルの名前。 @article は sysname で、既定値は NULL
です。
リターン コードの値
0
(成功) または 1
(失敗)。
解説
sp_register_custom_scripting
は、スナップショット レプリケーションとトランザクション レプリケーションで使用されます。
このストアド プロシージャは、レプリケートされたテーブルにスキーマを変更する前に実行する必要があります。 このストアド プロシージャの使用方法の詳細については、「 トランザクション アーティクル - スキーマの変更を反映するために再生成するを参照してください。
アクセス許可
sysadmin固定サーバー ロール、db_owner固定データベース ロール、またはdb_ddladmin固定データベース ロールのメンバーのみが、sp_register_custom_scripting
を実行できます。