sp_register_custom_scripting (Transact-SQL)

适用范围:SQL Server

复制允许用户定义的自定义存储过程替换事务复制中使用的一个或多个默认过程。 对复制的表进行架构更改时,将重新创建这些存储过程。

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'

要注册的自定义存储过程或脚本的类型。 @type是 varchar(16),可以是以下值之一。

说明
insert 复制语句时 INSERT ,将执行已注册的自定义存储过程。
update 复制语句时 UPDATE ,将执行已注册的自定义存储过程。
delete 复制语句时 DELETE ,将执行已注册的自定义存储过程。
custom_script 在数据定义语言 (DDL) 触发器的末尾执行脚本。

[ @value = ] N'value'

要注册的 Transact-SQL 脚本文件的存储过程或名称和完全限定的路径的名称。 @value为 nvarchar(2048),没有默认值。

指定NULL@value取消注册以前注册的脚本,该脚本与运行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