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