本部分包含有关排除复制故障所用到的工具和技术的信息。
主题 | 说明 |
---|---|
介绍可用于排除复制故障的工具,其中包括:复制监视器、复制代理、存储过程及其他工具。 | |
说明如何解决复制问题,其中包括:无法收敛数据;无法将数据传递到订阅服务器;处理低速网络;性能问题;安全问题以及从过期的合并订阅上载数据。 | |
介绍有关 Microsoft SQL Server 和复制代理所引发错误的原因和解决方法的信息。 |
有关如何排除 Oracle 发布故障的信息,请参阅对 Oracle 发布服务器进行故障排除。
其他资源
配置和维护复制
本部分介绍如何诊断和更正复制数据时可能出现的问题:
更新日期: 2007 年 2 月 1 日
本部分文档包含与复制相关的多个错误的原因和解决方法的信息。
错误 | 消息 |
---|---|
不能在具有唯一索引 '%.*ls' 的对象 '%.*ls' 中插入重复键的行。 | |
违反了 %ls 约束 '%.*ls'。不能在对象 '%.*ls' 中插入重复键。 | |
数据库 '%ls' 已还原,但在还原/删除复制时出错。该数据库仍保留为离线状态。请参阅 SQL Server 联机丛书中的主题 MSSQL_ENG003165。 | |
无法对 %S_MSG '%.*ls' 执行 %S_MSG,因为它正用于复制。 | |
无法更改 %S_MSG '%.*ls',因为正在为复制而发布它。 | |
MSSQL_ENG007395。请参阅对 Oracle 发布服务器进行故障排除。 |
无法启动链接服务器“%ls”的 OLE DB 访问接口“%ls”的嵌套事务。由于 XACT_ABORT 选项已设置为 OFF,因此必须使用嵌套事务。 |
无法删除发布。该发布已有订阅。 | |
未将服务器“%s”定义为订阅服务器。 | |
未将 '%s' 配置为分发服务器。 | |
未将 '%s' 配置为分发数据库。 | |
无法删除分发数据库 '%s'。此分发服务器数据库与发布服务器相关联。 | |
无法删除分发服务器 '%s'。此分发服务器与分发数据库相关联。 | |
无法删除订阅服务器 '%s'。在发布数据库“%s”中已有此服务器的订阅。 | |
复制 - %s:代理 %s 成功。%s | |
复制 - %s: 代理 %s 失败。%s | |
复制 - %s:代理 %s 计划重试。%s | |
由发布 '%s' 的订阅服务器 '%s' 创建的订阅已过期,且已停止。 | |
已设置发布 [%s] 的阈值 [%s:%s]。此发布的一个或多个订阅已过期。 | |
已设置发布 [%s] 的阈值 [%s:%s]。请确保日志读取器和分发代理正在运行并且可以满足滞后时间要求。 | |
已设置发布 [%s] 的阈值 [%s:%s]。请确保合并代理正在运行且符合要求。 | |
已设置发布 [%s] 的阈值 [%s:%s]。请确保合并代理正在运行且符合要求。 | |
已设置发布 [%s] 的阈值 [%s:%s]。请确保合并代理正在运行且符合要求。 | |
已设置发布 [%s] 的阈值 [%s:%s]。请确保合并代理正在运行且符合要求。 | |
用户 '%.*ls'.%.*ls 登录失败 | |
一次只能有一个日志读取器代理或日志相关过程(sp_repldone、sp_replcmds 和 sp_replshowcmds)连接到某个数据库。如果执行了一个日志相关过程,那么在启动日志读取器代理或者执行另一个日志相关过程之前,请删除执行第一个过程时所用的连接,或者在该连接上执行 sp_replflush。 | |
复制代理在 %ld 分钟内没有记录任何进度消息。这表明代理已停止响应或系统活动过多。请确保正在将记录复制到目标,并且与订阅服务器、发布服务器和分发服务器的连接仍然是活动的。 | |
代理关闭。有关详细信息,请参阅作业 '%s' 的 SQL Server 代理作业历史记录。 | |
在验证失败之后,订阅服务器“%s”对发布“%s”中项目“%s”的订阅已被重新初始化。 | |
订阅服务器“%s”对发布“%s”中项目“%s”的订阅未通过数据验证。 | |
订阅服务器“%s”对发布“%s”中项目“%s”的订阅已通过数据验证。 | |
只有 '%s' 或 db_owner 的成员可以删除匿名代理。 | |
应用复制的命令时在订阅服务器上找不到该行。 | |
发布 '%s' 的初始快照尚不可用。 | |
项目 '%s' 的初始快照尚不可用。 | |
冲突表 '%s' 不存在。 | |
无法在复制工作目录下创建子目录。(%ls) | |
无法将用户脚本文件复制到分发服务器。(%ls) | |
快照无法处理发布 '%s'。可能是由于活动架构的更改操作或者是所添加的新项目所致。 | |
MSSQL_ENG021617。请参阅对 Oracle 发布服务器进行故障排除。 |
无法运行 SQL*PLUS。请确保分发服务器上安装了最新版本的 Oracle 客户端代码。 |
MSSQL_ENG021620。请参阅对 Oracle 发布服务器进行故障排除。 |
通过系统 Path 变量获得的 SQL*PLUS 版本不够新,无法支持 Oracle 发布。请确保分发服务器上安装了最新版本的 Oracle 客户端代码。 |
MSSQL_ENG021624。请参阅对 Oracle 发布服务器进行故障排除。 |
在分发服务器 '%s' 上找不到已注册的 Oracle OLEDB 访问接口 OraOLEDB.Oracle。请确保分发服务器上安装并注册了最新版本的 Oracle OLEDB 访问接口。有关其他信息,请参阅 SQL Server 联机丛书中“排除 Oracle 发布服务器故障”中的“SQL Server 错误 21624”。 |
MSSQL_ENG021626。请参阅对 Oracle 发布服务器进行故障排除。 |
无法使用 Oracle OLEDB 访问接口 OraOLEDB.Oracle 连接到 Oracle 数据库服务器 '%s'。 |
MSSQL_ENG021627。请参阅对 Oracle 发布服务器进行故障排除。 |
无法使用 Microsoft OLEDB 访问接口 MSDAORA 连接到 Oracle 数据库服务器 '%s'。 |
MSSQL_ENG021628。请参阅对 Oracle 发布服务器进行故障排除。 |
无法更新分发服务器 '%s' 的注册表,以允许 Oracle OLEDB 访问接口 OraOLEDB.Oracle 与 SQL Server 一起在进程中运行。请确保当前登录名有权修改 SQL Server 拥有的注册表项。 |
MSSQL_ENG021629。请参阅对 Oracle 发布服务器进行故障排除。 |
指示 Oracle 的 Oracle OLEDB 访问接口 OraOLEDB.Oracle 已注册的 CLSID 注册表项不在分发服务器上。请确保分发服务器上安装并注册了 Oracle OLEDB 访问接口。 |
MSSQL_ENG021642。请参阅对 Oracle 发布服务器进行故障排除。 |
异类发布服务器需要链接服务器。已有一个名为 '%s' 的链接服务器。请删除链接服务器或另选一个发布服务器名称。 |
MSSQL_ENG021663。请参阅对 Oracle 发布服务器进行故障排除。 |
找不到源表 [%s].[%s] 的有效主键。 |
MSSQL_ENG021684。请参阅对 Oracle 发布服务器进行故障排除。 |
“Oracle 发布服务器 "%s" 的复制管理用户权限不足。有关所需权限,请参阅脚本 /MSSQL/Install/oracleadmin.sql。” |
'%s' 必须是有效的 Windows 登录名,且格式为:'计算机\登录名' 或 '域\登录名'。请参阅 '%s' 的文档。 | |
在继续操作之前,必须通过“%s”添加“%s”代理作业。请参阅 '%s' 的文档。 | |
客户端没有所需的特权。 | |
进程无法在“%2”上执行“%1”。 | |
合并进程无法更改“%1”上的生成历史记录。进行故障排除时,请使用详细的历史日志记录来重新启动同步,并指定要写入的输出文件。 | |
合并进程未能使用参数化的行筛选器来枚举项目中的更改。如果此操作仍失败,请增大该进程的查询超时值,缩短发布的保持期,并改进对已发布表的索引。 |
本部分介绍可用于排除复制故障的工具:
除了以上列出的工具外,还有下列工具也可用于排除复制故障。
工具 | 说明 | 有关详细信息... |
---|---|---|
数据验证 |
通过事务复制和合并复制,您可以验证订阅服务器中的数据与发布服务器中的数据是否匹配。可以对特定订阅或某一发布的所有订阅进行验证。 |
|
tablediff 实用工具 |
tablediff 实用工具用于比较两个非收敛的表中的数据,它对于排除复制拓扑中的非收敛故障非常有用。此实用工具可与验证结合使用:如果验证指示发布服务器中的数据和订阅服务器中的数据不匹配,可使用 tablediff 实用工具来标识不匹配的行;它还可以生成使发布服务器和订阅服务器收敛的 Transact-SQL。 |
How to: Compare Replicated Tables for Differences (Replication Programming) |
系统监视器 |
系统监视器提供了许多与复制代理有关的计数器,并可用于排除复制性能故障。 |
|
SQL Server Profiler |
SQL Server Profiler 是另一个可用于排除复制性能故障的工具。您可以捕获有关服务器事件的数据并将其保存到文件或表中供以后分析。例如,可以针对存储过程或其他需要花费很长时间完成的过程监视复制的数据库。 |
|
错误和事件日志 |
Microsoft SQL Server 将某些系统事件和用户定义事件记录到 SQL Server 错误日志和 Microsoft Windows 应用程序日志中。可以使用 SQL Server 错误日志中的信息对与复制有关的问题进行故障排除。 |
|
错误报告 |
默认情况下,在 SQL Server 2005 中启用错误报告功能。如果 SQL Server 数据库引擎、SQL Server 代理或 Analysis Services 中发生致命错误,会向 Microsoft 自动发送一份报告。另外,如果需要联系客户支持部门,错误报告所提供的信息会很有用。 |
|
SQLdiag 实用工具 |
SQLdiag 实用工具是一般用途的诊断收集实用工具,可作为控制台应用程序或服务运行。可以使用 SQLdiag 来从 SQL Server 和其他类型的服务器中收集日志和数据文件,同时还可将其用来一直监视服务器或对服务器的特定问题进行故障排除。SQLdiag 用于加快和简化为 Microsoft 客户支持服务部门收集诊断信息的过程。 |