sp_addscriptexec (Transact-SQL)

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

主题链接图标Transact-SQL 语法约定

语法

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

参数

  • [ [@publication= ] 'publication'
    发布的名称。publication 的数据类型为 sysname,无默认值。
  • [ @scriptfile= ] 'scriptfile'
    SQL 脚本文件的完整路径。scriptfile 的数据类型为 nvarchar(4000),没有默认值。
  • [ @skiperror= ] 'skiperror'
    指示在脚本处理过程中遇到错误时是否停止分发代理或合并代理。SkipError 的数据类型为 bit,默认值为 0。

    0 = 代理将停止。

    1 = 代理继续处理脚本并忽略错误。

  • [ @publisher= ] 'publisher'
    指定一个非 Microsoft SQL Server 发布服务器。publisher 的数据类型为 sysname,默认值为 NULL。

    ms174360.note(zh-cn,SQL.90).gif注意:
    从 SQL Server 发布服务器进行发布时,不应使用 publisher

返回代码值

0(成功)或 1(失败)

备注

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

sp_addscriptexec 不用于快照复制。

若要使用 sp_addscriptexec,则 SQL Server 服务帐户必须对快照存储位置有读写权限,对所有脚本的存储位置有读取权限。

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

sp_addscriptexec 对于将脚本应用到订阅服务器非常有用,并且使用 sqlcmd 将脚本的内容应用于订阅服务器。但是,因为订阅服务器的配置可以改变,所以在投递到发布服务器前测试的脚本仍可能导致订阅服务器出错。skiperror 提供了使发布代理或合并代理忽略错误并继续执行的功能。在运行 sp_addscriptexec 之前使用 sqlcmd 测试脚本。

ms174360.note(zh-cn,SQL.90).gif注意:
跳过的错误将继续记录在代理历史记录中以供参考。

对于使用 FTP 进行快照传送的订阅,仅支持 Microsoft SQL Server 订阅服务器使用 sp_addscriptexec 投递脚本文件。

权限

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

请参阅

参考

系统存储过程 (Transact-SQL)

其他资源

How to: Execute Scripts During Synchronization (Replication Transact-SQL Programming)
同步数据

帮助和信息

获取 SQL Server 2005 帮助