sp_replcmds (Transact-SQL)
返回标记为要复制的事务的命令。 此存储过程在发布服务器的发布数据库中执行。
重要提示 |
---|
只应在解决与复制有关的问题时才运行 sp_replcmds 过程。 |
语法
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。