sp_addscriptexec (Transact-SQL)

适用范围:SQL Server

将 Transact-SQL 脚本(.sql 文件)发布到发布的所有订阅服务器。 此存储过程在发布服务器上对发布数据库执行。

Transact-SQL 语法约定

语法

sp_addscriptexec
    [ @publication = ] N'publication'
    , [ @scriptfile = ] N'scriptfile'
    [ , [ @skiperror = ] skiperror ]
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

参数

[ @publication = ] N'publication'

发布的名称。 @publicationsysname,无默认值。

[ @scriptfile = ] N'scriptfile'

SQL 脚本文件的完整路径。 @scriptfile为 nvarchar(4000),没有默认值。

[ @skiperror = ] skiperror

指示在脚本处理过程中遇到错误时是否停止分发代理或合并代理。 @skiperror为,默认值为 0.

  • 0 = 代理停止。
  • 1 = 代理继续执行脚本并忽略错误。

[ @publisher = ] N'publisher'

指定非 SQL Server 发布服务器。 @publisher为 sysname,默认值为 NULL.

从 SQL Server 发布服务器发布时,不应使用@publisher。

返回代码值

0(成功)或 1(失败)。

注解

sp_addscriptexec 用于事务复制和合并复制。

sp_addscriptexec 不用于快照复制。

若要使用 sp_addscriptexec,SQL Server 服务帐户必须具有快照位置的读取和写入权限,以及存储任何脚本的位置的读取权限。

sqlcmd 实用工具用于在订阅服务器上执行脚本,并在连接到订阅数据库时分发代理或合并代理使用的安全上下文中执行该脚本。 在以前版本的 SQL Server 上运行代理时, 将使用 osql 实用工具 而不是 sqlcmd 实用工具

sp_addscriptexec 在将脚本应用于订阅服务器时非常有用,并使用 sqlcmd 实用工具 将脚本的内容应用于订阅服务器。 但是,由于订阅服务器配置可能会有所不同,因此在发布到发布服务器之前测试的脚本仍可能导致订阅服务器上的错误。 @skiperror允许分发代理或合并代理忽略错误并继续操作。 在运行sp_addscriptexec之前,使用 sqlcmd 实用工具测试脚本。

注意

跳过的错误将继续记录在代理历史记录中以供参考。

sp_addscriptexec仅 SQL Server 订阅服务器支持使用 FTP 发布脚本文件进行快照传递的发布。

权限

只有 sysadmin 固定服务器角色的成员db_owner固定数据库角色的成员才能执行sp_addscriptexec