基础配置
常见问题
机器名和数据库名不一致
- 检查名称
use master
go
select @@servername
select serverproperty('servername')
- 配置计算机名与服务名一致
USE master
GO
if serverproperty('servername') <> @@servername
begin
declare @server sysname
set @server = @@servername
exec sp_dropserver @server = @server
set @server = cast(serverproperty('servername') as sysname)
exec sp_addserver @server = @server , @local = 'LOCAL'
end
- 重启数据库
使用过程
常见问题
数据不一致
- 查询当前报错事务号
sp_helpsubscriptionerrors '发布服务器名称'
, '发布数据库名称'
, '发布名称'
, '订阅服务器名称'
, '订阅数据库名称'
或者直接查询表MSrepl_commands
- 字段xact_seqno 表示命令关联的事务,一个事务可能关联一个或多个Command,
- 字段 command_id 表示在事务中每个Command的ID值;
- 字段 command 存储SQL Server的command,数据类型是varbinary(1024);
初略查看待执行的语句
SELECT CAST(SUBSTRING(command, 7, 8000) AS NVARCHAR(MAX))
FROM dbo.msrepl_commands
WHERE xact_seqno = 0x0008E9340005C068003E
查看详细的语句
sys.sp_browsereplcmds '开始事务号' ]
,'结束事务号' ]
- 处理报错事务号
- 直接跳过事务号 (我自己尝试没成功)
sp_setsubscriptionxactseqno '发布服务器主机名'
, '发布数据库'
, '发布名称'
, 跳过的事务号
- 或者直接删除MSrepl_commands表的数据 (我自己尝试成功)
delete MSrepl_commands where xact_seqno = 跳过的事务号