搜索
首页数据库mysql教程SQLServer Replication 常见错误

SQLServer Replication 常见错误

Jun 07, 2016 pm 03:44 PM
replicationsqlserver常见错误

1. 错误: 已将此(这些)订阅标记为不活动,必须将其重新初始化。需要删除NoSync 订阅,然后重新创建它们 use distribution go -- 查找状态不正常的发布 select status, * from dbo.MSsubscriptions where status 2 -- 修改状态 update dbo.MSsubscriptions s

1. 错误:已将此(这些)订阅标记为不活动,必须将其重新初始化。需要删除NoSync 订阅,然后重新创建它们      

use distribution
go
--查找状态不正常的发布
select status,*from dbo.MSsubscriptions where status2
--修改状态
update dbo.MSsubscriptions set status=2where status2

  观察复制链是否能正常运行,正常后用tablediff比较发布链中的表数据是否一致
  还可以重新初始化快照,但是数据量大就是个悲剧。

2. 错误:表、存储过程不存在以及表结构不一致等
处理方法:
a. 表或存储过程不存在:
   在订阅端对应的库中补齐缺失的对象;

   有一种比较奇怪的现象是订阅端表明明存在,但是同步链依然报错,此时可能有两种情况:
   第一: 表字段不一致,可以参照下面(b)的方式补齐表字段;
   第二: 表字段也一致,但是依旧报错,可以采取三种方式解决:
     a. 暂停同步链,然后再次开启,看是否能通过,如果不行,进行下面的步骤;
     b. 勾选掉同步链中报错的这个表,然后观察同步链,此时去掉了这个表的发布,错误一般都能过去,
        等到所有数据同步后,再将这个表勾选上,一般都能过;同步链正常后,在用TableDiff工具比较下
        这个表的数据;
     c. 如果b步骤依然报错,那就只能重建了。


b. 列名'xxx' 无效
  可以通过以下语句查找缺失的字段对应的表

--查找某个发布链中的某个字段(Rp_XXXX 发布名xxx 字段名)

select a.name as table_name,b.name as column_name,(select'alter table '+a.name+' add '+b.name+''+
(
casewhen name='nvarchar'thencast(b.max_length/2ASvarchar)
when name like'date%'or name='money'then''
else name end )
from sys.types where system_type_id=b.system_type_id ) as definition FROM dbo.sysarticles a WITH(NOLOCK) innerjoin sys.columns b WITH(NOLOCK)
on a.objid=b.object_idinnerjoin dbo.syspublications c with(nolock) on a.pubid=c.pubid
where c.name='Rp_XXXX'and b.name='xxx'

3. 错误:.主键冲突
   处理方法:跳过错误
  SQLServer Replication 常见错误
错误完成后,需要比较两边数据是否一致(比下数据量就行了)

---------------跳过订阅机器上面的错误------------------------
--
---------------------在分发机器上--------------------------
--
语法
sp_helpsubscriptionerrors [ @publisher = ]'publisher'
,
[ @publisher_db = ]'publisher_db'
,
[ @publication = ]'publication'
,
[ @subscriber = ]'subscriber'
,
[ @subscriber_db = ]'subscriber_db'

--get publisher subscriber
select*from MSsubscriber_info

--get publisher_db publication subscriber_db=publisher_db
select*from MSpublications

--example
sp_helpsubscriptionerrors 'SQLw2k8','dbtranpub','dbtranpub_pub','SQLw2k8Subscriber','dbtransub'

--获取xact_seqno 值

----------------------在订阅机器上---------------------------
sp_setsubscriptionxactseqno [ @publisher= ]'publisher',
[ @publisher_db= ]'publisher_db',
[ @publication= ]'publication',
[ @xact_seqno= ] xact_seqno

--example
sp_helpsubscriptionerrors 'SQLw2k8','dbtranpub','dbtranpub_pub',xact_seqno

-------------------------------------------------------------------------------------

4. 错误:应用复制的命令时在订阅服务器上找不到该行

   a. 可以采用“主键冲突”错误的处理方式,跳过错误,然后再用tablediff比较两个表的数据差;
   b. 在订阅端补充缺失的数据

--使用如下语句找出错误号
selecttop100 e.xact_seqno ,e.command_id,e.*
from dbo.MSdistribution_history h
join dbo.MSrepl_errors e on h.error_id=e.id
where comments notlike'%transaction%'--失败的代理
orderby id desc

--用上面查到的具体事务序列号,查看复制组件执行的具体命令
--在分发数据库上执行:sp_browsereplcmds,注意必须限定开始和结束xact_seqno
sp_browsereplcmds '0x0000003B00000020000500000000','0x0000003B00000020000500000000'
--结果如下
article_id command
1 {CALL [dbo].[sp_MSdel_dboUPCCodeTransaction] ('000000002 ')}

--找到对应的对象
select publisher_db,article From dbo.MSarticles where article_id=1and publication_id=(
select publication_id from MSpublications with(nolock) where publication='Rp_xxx')

--由sp_MSdel 可以知道,这条命令是一个删除语句,因为发布端的数据已经不存在,所以只能跳过;

--如果是修改,需要验证上述数据在故障订阅服务器上是否存在,如果不存在,则补上。

5. 错误:用户'xxx' 登录失败或者The process could not connect to Subscriber 'xxxx'.
   处理方法: 检查账号是否正确,能够登录到发布和订阅服务器,而且有相应的权限。

6. 发布'xxx' 的初始快照尚不可用
   保证SQLSERVERAGENT已经运行,复制=》发布内容=》发布项目=》右击右侧的订阅=》重新初始化
   如果还不行,复制监视器--发布服务器--xxx--发布的项目--快照,看到进程未能创建文件“\\XXZ\SQLPUB\unc”,
   到该文件夹重新配置sql的帐号对该文件夹权限为"完全"。

7. 进程未能从表“[dbo].[syncobj_0x3745373834413345]”向外大容量复制
   在写BCP 数据文件时发生I/O 错误(源: ODBC SQL Server Driver (ODBC); 错误代码: 0)
   解决方法:就是字符类型全部改为n类型的解决问题(char-nchar,varchar-nvarchar,ntext).

8. 错误消息:
 "代理'xxxx' 在出错后正在重试。已重试了25 次。有关详细信息,请参阅Jobs 文件夹中的代理作业历史记录。”

  发生这个错误一般都是在一台机器上面有比较多的发布链,错误原因在于数据库对Replication使用内存的限制,
  我们需要更改这个限制来解决这个问题(最好是不要再一台机器上创建太多的发布链),方法如下:

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\
  点开Windows项,找到下面这些内容
  %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows Shareddiv=1024,20480,768
  将最后的数字(不一定是这个数字,可能是等)改成1024 保存,重启即可。

  Windows2008 server 如果不是amdin用户可能会不让打开注册表,如果是管理组权限的话,可以到
  C:\windows\system32 下面找到regedit32.exe 文件,右键,然后将自己的账号添加到运行权限里面。

9.--Cannot drop the database XXX because it is being used for replication
  exec sp_removedbreplication 'database'

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
解释InnoDB缓冲池及其对性能的重要性。解释InnoDB缓冲池及其对性能的重要性。Apr 19, 2025 am 12:24 AM

InnoDBBufferPool通过缓存数据和索引页来减少磁盘I/O,提升数据库性能。其工作原理包括:1.数据读取:从BufferPool中读取数据;2.数据写入:修改数据后写入BufferPool并定期刷新到磁盘;3.缓存管理:使用LRU算法管理缓存页;4.预读机制:提前加载相邻数据页。通过调整BufferPool大小和使用多个实例,可以优化数据库性能。

MySQL与其他编程语言:一种比较MySQL与其他编程语言:一种比较Apr 19, 2025 am 12:22 AM

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。 MySQL以其高性能、可扩展性和跨平台支持着称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

学习MySQL:新用户的分步指南学习MySQL:新用户的分步指南Apr 19, 2025 am 12:19 AM

MySQL值得学习,因为它是强大的开源数据库管理系统,适用于数据存储、管理和分析。1)MySQL是关系型数据库,使用SQL操作数据,适合结构化数据管理。2)SQL语言是与MySQL交互的关键,支持CRUD操作。3)MySQL的工作原理包括客户端/服务器架构、存储引擎和查询优化器。4)基本用法包括创建数据库和表,高级用法涉及使用JOIN连接表。5)常见错误包括语法错误和权限问题,调试技巧包括检查语法和使用EXPLAIN命令。6)性能优化涉及使用索引、优化SQL语句和定期维护数据库。

MySQL:初学者的基本技能MySQL:初学者的基本技能Apr 18, 2025 am 12:24 AM

MySQL适合初学者学习数据库技能。1.安装MySQL服务器和客户端工具。2.理解基本SQL查询,如SELECT。3.掌握数据操作:创建表、插入、更新、删除数据。4.学习高级技巧:子查询和窗口函数。5.调试和优化:检查语法、使用索引、避免SELECT*,并使用LIMIT。

MySQL:结构化数据和关系数据库MySQL:结构化数据和关系数据库Apr 18, 2025 am 12:22 AM

MySQL通过表结构和SQL查询高效管理结构化数据,并通过外键实现表间关系。1.创建表时定义数据格式和类型。2.使用外键建立表间关系。3.通过索引和查询优化提高性能。4.定期备份和监控数据库确保数据安全和性能优化。

MySQL:解释的关键功能和功能MySQL:解释的关键功能和功能Apr 18, 2025 am 12:17 AM

MySQL是一个开源的关系型数据库管理系统,广泛应用于Web开发。它的关键特性包括:1.支持多种存储引擎,如InnoDB和MyISAM,适用于不同场景;2.提供主从复制功能,利于负载均衡和数据备份;3.通过查询优化和索引使用提高查询效率。

SQL的目的:与MySQL数据库进行交互SQL的目的:与MySQL数据库进行交互Apr 18, 2025 am 12:12 AM

SQL用于与MySQL数据库交互,实现数据的增、删、改、查及数据库设计。1)SQL通过SELECT、INSERT、UPDATE、DELETE语句进行数据操作;2)使用CREATE、ALTER、DROP语句进行数据库设计和管理;3)复杂查询和数据分析通过SQL实现,提升业务决策效率。

初学者的MySQL:开始数据库管理初学者的MySQL:开始数据库管理Apr 18, 2025 am 12:10 AM

MySQL的基本操作包括创建数据库、表格,及使用SQL进行数据的CRUD操作。1.创建数据库:CREATEDATABASEmy_first_db;2.创建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入数据:INSERTINTObooks(title,author,published_year)VA

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能