sp_register_custom_scripting (Transact-SQL)
適用対象: 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)であり、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
insert | 登録されたカスタム ストアド プロシージャは、INSERT ステートメントがレプリケートされるときに実行されます。 |
update | 登録したカスタム ストアド プロシージャを、UPDATE ステートメントがレプリケートされるときに実行。 |
delete | 登録したカスタム ストアド プロシージャを、DELETE ステートメントがレプリケートされるときに実行。 |
custom_script | スクリプトは、データ定義言語 (DDL) トリガーの最後に実行されます。 |
[ @value = ] 'value'
登録されている Transact-SQL スクリプト ファイルへのストアド プロシージャまたは名前と完全修飾パスの名前。 value は nvarchar(1024) で、既定値はありません。
Note
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 は、スナップショット レプリケーションとトランザクション レプリケーションで使用されます。
このストアド プロシージャは、レプリケートされたテーブルにスキーマを変更する前に実行する必要があります。 このストアド プロシージャの使用方法の詳細については、「 スキーマの変更を反映するためにカスタム トランザクション プロシージャを生成するを参照してください。
アクセス許可
sysadmin固定サーバー ロール、db_owner固定データベース ロール、またはdb_ddladmin固定データベース ロールのメンバーのみが、sp_register_custom_scriptingを実行できます。