sp_replcmds (Transact-SQL)

适用于:SQL Server (所有受支持的版本) Azure SQL 托管实例

返回标记为要复制的事务的命令。 此存储过程在发布服务器上对发布数据库执行。

重要

应仅运行 sp_replcmds 过程来排查复制问题。

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

语法

  
sp_replcmds [ @maxtrans = ] maxtrans  

参数

[ @maxtrans = ] maxtrans 要返回相关信息的事务数。 maxtransint,默认值 为 1,指定下一个正在等待分发的事务。

结果集

列名称 数据类型 说明
项目 ID int 文章的 ID。
partial_command bit 指示这是否为部分命令。
command varbinary (1024) 命令值。
xactid binary(10) 事务 ID。
xact_seqno varbinary(16) 事务序列号。
publication_id int 发布 ID。
command_id int MSrepl_commands中的命令的 ID。
command_type int 命令的类型。
originator_srvname sysname 发起事务的服务器。
originator_db sysname 发起事务的数据库。
pkHash int 仅限内部使用。
originator_publication_id int 发起事务的发布的 ID。
originator_db_version int 发起事务的数据库的版本。
originator_lsn varbinary(16) 标识初始发布中命令的日志序列号 (LSN)。

备注

sp_replcmds 由日志读取器进程在事务复制中使用。

复制将给定数据库中 运行sp_replcmds 的第一个客户端视为日志读取器。

此过程可以为所有者限定的表或未限定的表名(默认值)生成命令。 通过添加限定的表名,可将数据从特定用户在一个数据库中拥有的表复制到此用户在另一个数据库中拥有的表中。

注意

由于源数据库内的表名是由所有者名称限定的,所以目标数据库内的表所有者必须具有相同的所有者名称。

尝试在同一数据库中运行 sp_replcmds的 客户端收到错误 18752,直到第一个客户端断开连接。 第一个客户端断开连接后,另一个客户端可以运行 sp_replcmds,并成为新的日志读取器。

如果sp_replcmds无法复制文本命令,则会将警告消息编号 18759 添加到 Microsoft SQL Server 错误日志和 Microsoft Windows 应用程序日志,因为该文本指针未在同一事务中检索。

权限

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

另请参阅

错误消息
sp_repldone (Transact-SQL)
sp_replflush (Transact-SQL)
sp_repltrans (Transact-SQL)
系统存储过程 (Transact-SQL)