sp_replcmds (Transact-SQL)

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

重要说明重要提示

只应在解决与复制有关的问题时才运行 sp_replcmds 过程。

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

语法

sp_replcmds [ @maxtrans = ] maxtrans

参数

  • [ **@maxtrans=**\] maxtrans
    要返回相关信息的事务的数量。maxtrans 的数据类型为 int,默认值为 1,表示指定下一个等待分发的事务。

结果集

列名

数据类型

说明

article 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 无法复制文本命令,则将在 Microsoft SQL Server 错误日志和 Microsoft Windows 应用程序日志中添加 18759 号警告消息。

权限

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