sp_register_custom_scripting (Transact-SQL)

適用対象: SQL Server

レプリケーションを使用すると、トランザクション レプリケーションで使用される 1 つ以上の既定のプロシージャを、ユーザー定義のカスタム ストアド プロシージャで置き換えることができます。 レプリケートされたテーブルにスキーマ変更が行われると、これらのストアド プロシージャは再作成されます。

sp_register_custom_scripting は、新しいユーザー定義カスタム ストアド プロシージャの定義をスクリプト化するためにスキーマの変更が発生したときに実行されるストアド プロシージャまたは Transact-SQL スクリプト ファイルを登録します。 この新しいユーザー定義カスタム ストアド プロシージャには、テーブルに対する新しいスキーマを反映する必要があります。 sp_register_custom_scripting はパブリッシャー側のパブリケーション データベースで実行され、スキーマの変更が発生すると、登録済みのスクリプト ファイルまたはストアド プロシージャがサブスクライバーで実行されます。

Transact-SQL 構文表記規則

構文

sp_register_custom_scripting
    [ @type = ] 'type'
    , [ @value = ] N'value'
    [ , [ @publication = ] N'publication' ]
    [ , [ @article = ] N'article' ]
[ ; ]

引数

[ @type = ] 'type'

登録されているカスタム ストアド プロシージャまたはスクリプトの種類。 @typevarchar(16)であり、次のいずれかの値を指定できます。

Value 説明
insert 登録されたカスタム ストアド プロシージャは、 INSERT ステートメントがレプリケートされるときに実行されます。
update 登録されたカスタム ストアド プロシージャは、 UPDATE ステートメントがレプリケートされるときに実行されます。
delete 登録されたカスタム ストアド プロシージャは、 DELETE ステートメントがレプリケートされるときに実行されます。
custom_script スクリプトは、データ定義言語 (DDL) トリガーの最後に実行されます。

[ @value = ] N'value'

登録されている Transact-SQL スクリプト ファイルへのストアド プロシージャまたは名前と完全修飾パスの名前。 @valuenvarchar(2048) で、既定値はありません。

@valueNULLを指定すると、以前に登録されたスクリプトが登録解除されます。これは、sp_unregister_custom_scriptingの実行と同じです。

@typeの値がcustom_script場合、Transact-SQL スクリプト ファイルの名前と完全なパスが必要です。 それ以外の場合、 @value は登録済みのストアド プロシージャの名前である必要があります。

[ @publication = ] N'publication'

カスタム ストアド プロシージャまたはスクリプトが登録されているパブリケーションの名前。 @publicationsysname で、既定値は NULL です。

[ @article = ] N'article'

カスタム ストアド プロシージャまたはスクリプトが登録されているアーティクルの名前。 @articlesysname で、既定値は NULL です。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

sp_register_custom_scripting は、スナップショット レプリケーションとトランザクション レプリケーションで使用されます。

このストアド プロシージャは、レプリケートされたテーブルにスキーマを変更する前に実行する必要があります。 このストアド プロシージャの使用方法の詳細については、「 トランザクション アーティクル - スキーマの変更を反映するために再生成するを参照してください。

アクセス許可

sysadmin固定サーバー ロール、db_owner固定データベース ロール、またはdb_ddladmin固定データベース ロールのメンバーのみが、sp_register_custom_scriptingを実行できます。