高分悬赏数据库数据同步相关问题

两台SQL服务器,外网地址不同。初始数据库内容一致。
A、B服务器同时进行写入,写入内容不一致。写入一小时后进行数据同步(需要实现A的增量写入到B中,B的增量写入到A中,使两台服务器的数据库数据一致。)
如果想实现这种效果,应该如何操作?

第1个回答  2014-01-13
呵呵,我们是通过VPN来做,虚拟个局域网追问

通过VPN就只用一台了,VPN我们这边测的,感觉太慢了。

追答

就算是数据同步了,你那写入内容怎么保证质量,外部网络就一定100%稳定,而且这样数据也不安全吧。比方说,用OpenRowSet关键字来写远程服务器数据插入,当写不进去的时候系统不会产生备份。同步不是不可以,写入同步未必比VPN效果好。
我只是建议啊,读取可以同步,写入就在本服务器上操作

本回答被提问者和网友采纳
第2个回答  2014-01-13
操作使用的一些技巧(事务复制类型):
1. 如何修改一个已经发布的表的属性?
将发布所有订阅删除,(发布不用删除),就可以在发布属性的项目中取消表,然后就可以修改该表了,修改后,再将表加入发布内就可以了。
2. 常用的操作界面
(1) 一般都在监视器--发布项目,可以看到快照分发和订阅的即时信息。
(2) 另外一个操作地方是发布的属性,(在属性--状态里可以启动代理)。
(3) 还有一个是工具--复制--配置发布、订阅服务器和分发,需要订阅的服务器必须在这里指定授权后订阅才能成功.
============
问题:
数据库无法登陆的老问题:数据库属性-安全里面,不要选仅windows登陆,换另外一个模式。
0. 订阅一个快照发布(不是事务复制)出错,"21776 名称xxx在TransPublication集合上没有找到",在企业管理器中,将发布数据库和订阅数据库都停止或者断开,再启动,重新连接就可以订阅快照发布了.真是奇怪,有莫名其妙的问题可以尝试重启
服务器试试,有时后一台机器上可以正常控制订阅操作,而另外一台机器上却订阅操作出错,也重新连接服务器试试.
1) 一开始遇到的问题是,注册的local服务器不能用,删除后重新命名搞定。
2) SQL Server代理正在使用系统帐户,它会导致复制失败,点这个提示点确定后,本账户的选项为灰色,原来是配置发布的服务器不是本机,到本机上操作发布,就可以选"本账户"了。
3) 又遇到不能署名订阅,"不允许请求的署名订阅",明明发布和订阅服务器双方都注册了,也双方都建立了
订阅的用户帐号,原因:在这步,点注册服务器,然后不能选默认的模拟SQL登陆,而是要选"使用SQL身份验证",然后输入名称和密码。
如果始终弹出"不允许请求的署名订阅",不能进到选择登陆模式的界面,退出订阅向导,在企业管理器中,进入发布服务器,复制-右键-"配置发布、订阅服务器和分发"-订阅服务器-添加订阅服务器机器名和帐号,如果已经有了,直接确定下。再
进订阅服务器,订阅就不会显示不能署名订阅了。
以上过程可能发现明明订阅服务器名字已经在发布服务器添加了,还是出现这个问题,就一定要在订阅服务器进入发布服务器,然后添加订阅服务器的名字,为什么会这样,可能是在发布服务器指定了改订阅服务器的名字后,但订阅服务器没有刷新,可以断开一次订阅服务器和发布服务器,再来订阅,也可以解决。
4. 请求订阅已经建立好了,但订阅状态显示"正在重试", 上次动作"进程未能连接到subscriber SHD-SHD"。
原因是我安装sql后,曾经改过电脑的名字,改回SHD-SHD.(有的人是因为SQL服务器端口修改过造成)。还有可能是MS SQL Server和SQL Server Agent服务没有用域用户身份启动并运行,于是我把B加到A所在的域,并且把A的管理员用户加到B的SQLServerAgent服务的登陆用户中。
5. 但订阅状态显示"请求共享代理程序失败", "进程未能连接到distributor..."。
怀疑是订阅设置时,连接发布数据库的帐号有问题,在订阅(右键)的历史记录中查看具体的错误原因。帐号正确后,历史记录又说订阅端机器没有配置,于是全部删除订阅和发布来试,结果发布确无法删除发布,出现20015错误,原来是订阅的机器通过局域网,打开了快照的共享目录没有关闭,关闭后,成功删除发布。如果还无法删,干脆把共享的快照目录取消共享,再删,然后重新配置快照目录共享。
6. 订阅服务器上的订阅又无法删除了,提示"无法更新或删除从 MSX 服务器上发起的作业"。
这是因为:计算机更换名之后就出现这种错误,自己不能修改自己创建的作业。
解决办法:
在msdb的sysjobs表中把originating-server中的值全部改为更改后的计算机名
update msdb..sysjobs set originating_server = '现服务器名'
有时可以到管理-sql server代理--作业,查看更多情况和操作。
7. 全部重新创建发布和订阅成功,执行却又出现"发布内容 null"的提示。
是因为订阅服务器没有连接到分发服务器。(1) SQLSERVERAGENT没启动;(2)MS SQL Server和SQL Server Agent服务必须以域用户身份启动并运行,以上问题检查中随时注意SQLSERVERAGENT(控制面板-管理-服务)服务是否已经启动。
8. 订阅服务器已经登陆上发布服务器,但在建立订阅时看不见该服务器的发布。
是因为没有配置分发服务器,工具-复制-"配置发布、订阅服务器和分发",再检查SQLSERVERAGENT是否运行。然后再在发布属性-发布访问列表,添加订阅服务器登陆的登陆名,订阅端终于看见发布了。
9. 发布 'xxx' 的初始快照尚不可用。
保证SQLSERVERAGENT已经运行,复制=》发布内容=》发布项目mytab=》右击右侧的订阅=》重新初始化
如果还不行,复制监视器--发布服务器--xxx--发布的项目--快照,看到进程未能创建文件“\\XXZ\SQLPUB\unc”,到该文件夹重新配置sql的帐号对该文件夹权限为"完全"。
10. 订阅端产生 "快照尚不可用 发生操作系统错误 53",订阅服务器帐号访问快照文件夹出权限不够。
分配权限,还有检查防火墙,被禁止了访问。
11. 有个表无法发布,选择框显示红叉,没有主键的表无法发布。
12. 进程未能从表“[dbo].[syncobj_0x3745373834413345]”向外大容量复制。
在写 BCP 数据文件时发生 I/O 错误(源: ODBC SQL Server Driver (ODBC); 错误代码: 0)
解决方法:就是字符类型全部改为n类型的解决问题(char-nchar,varchar-nvarchar,ntext).
13、在数据发布时报如下错误信息:
在BCP数据文件中遇到意外的EOF(源:ODBC SQL Server Driver(ODBC):错误代码:S1000)
这是因为数据库中含有TEXT或nTExt或Image字段引起的,只要在某项发布属性页中选择<快照>-<快照格式>-<字符模式格式>,即可解决该问题。
14、另外,在建数据发布时,报如下错误:
违反了Primary Key约束'PK_@snapshot_seqnos_7fab3fda'. 不能在对象'#7EB71BA1'中插入重复键。
(源:zzb_stockserver(数据源); 错误代码:2627)
这是因为在建发布时,数据库数据正在执行插入或修改动作引起的,只要该发布的快照重新运行一下即可。
15、对某些大型数据表无法生成快照的问题,数据库报如下错误:
进程未能从表"[dbo].[syncobj_0x3436383044343035]"向外大容量复制,在写 BCP 数据文件时发生 I/O 错误(源: ODBC SQL Server Driver (ODBC);错误代码: 0)
这是因为该表有问题或表数据太大造成的,可用如下方法试着解决一下:
a、用DBCC checktable 对该表检查一下,数据表是否有问题,然后再试一下重新生成数据快照。
b、如果上述问题仍无法解决,可以用数据导出功能将数据表导到订阅服务器中。
c、然后重建一个针对该数据表的数据发布,选择不生成快照功能,然后运行下述问题4的解决方法,解决出现的问题。
16、在建立订阅时,选择不初始化订阅方数据表,则在订阅服务器不产生相应的复制存贮过程,运行该发布时,会报如下错误:
未能找到存贮过程'sp_MSupd_XXX'...
原因如下:
Problem Deion :
======
Replication Distribution Agent reports error. The error message is "It could not find the stored procedure sp_MSins_***".
Reason :
======
If we choose "the subscriber has schema and data already" option when we create the
subion, those three system auto created stored procedures will not be created in the subscribing database side, they are "sp_MSins_***"/"sp_MSupd_***"/"sp_MSdel_***".
Soltuion :
======
We could use the system command "sp_publicationcustomprocs 'pulication_name'"
to create the s of those three system stored procedures. Then we run these in the subscribing database. The problem will be resolved.
解决方案:
在发布服务器上运行如下命令:sp_publicationcustomprocs 'xxxx', 其中xxxx为发布名称,该命令会生成创建上述三个存贮过程的脚本,然后在订阅服务器运行生成三个存储过程即可。
17、在订阅数据时,发生如下错误:
该订阅已标记为不活动,必须重新初始化该订阅。需要删除并重新创建 NoSync订阅。
(源: zzb_stockserver (数据源); 错误代码: 21074)
解决方案:
在发布服务器上,选择某项发布,在属性-》订阅-》重新初始化。可以解决上述问题
18、在数据发布时,发生如下错误:
不能在具有唯一索引 'PK_tbMeetingMemo' 的对象 'tbMeetingMemo' 中插入重复键的行。
(源: ZZB-XHSTOCK (数据源); 错误代码: 2601)
原因:可能是在发布该表时,在不同的发布中存在多次发布该表的情况。
解决方法:
a、查明是否有多次发布该表的情况.
在发布服务器的发布数据库中用运行如下SQL语句:select * from sysarticles order by dest_table
查看在dest_table列中是否出现多次该表的信息,如是,则说明该表已被多次发布,可以用下一步中说明的方法来查看是哪些发布发布了该表。
b、运行语句:select * from syspublications,查看pubid与上述信息相同的pubid的内容,则就能确定是何种发布发布了相同的数据表。
c、找到了发布后,如果是增加数据表,则不用删除该发布下的所有订阅,如果是去除发布的数据表,则需删除该发布下的所有的订阅信息,修改相应的发布内容,重新制定相应的订阅。
19. 创建发布,14294错误,"请提供@job_id标识作业",是因为你删除了以前系统自动生成的作业。
方法:工具-复制--禁用发布,重新配置发布、订阅服务器和分发,完成后,发布的数据库显示为一个手型的共享图标,再创建发布
20. 订阅和发布都删除完了,但禁用发布不成功,提示:无法除去分发数据库'distribution',该数据库正在使用。
停止数据库,再启动数据库,再禁止发布。
21. 配置发布和分发向导,最后完成时错误18481:配置分发服务器:未能连接到服务器。
因为distributor_admin未在该服务器上定义为远程登录你肯定在装完SQL SERVER以后,改了计算机名,虽然sql server 还可以用,但一用复制时,SQL SERVER读取了旧的计算机实例名,不信,你试试select @@SERVERNAME
显示出来的,肯定不是你现在的计算机名。于是,你用:
sp_dropserver <(用select @@SERVERNAME显示出来的旧名)>
go
sp_addserver <你现在的计算机名>, LOCAL
go
例如:sp_dropserver 'E0184D34429345F\SQL2K'
go
sp_addserver 'deboywang\SQL2K', LOCAL
go
重启sql server服务,问题就可以解决了。
除此之外,如果要修改@@Servername还可以使用下面的方法:
1) exec sp_helpserver 检查你的server名字。
2) 如果不正确,用exec sp_setnetname修正。
另外,当注册的名字改为其他名字后,注册登记是成功的(在客户端工具里添加了匿名),发布时就会出现这个问题。
22. 强制订阅无法删除:在发布服务器上先后删除订阅和发布后,订阅服务器上该强制订阅始终存在,无法删除。
问微软支持,得结论:
sp_removedbreplication 'job'
JOB为订阅复制的数据库名称。
其他问题:

注:
0.不要去乱删 管理--sql server代理--作业的内容。严格按照先删订阅,再删发布来进行.
1、如何忽略在分发中出现的报错
a、在发布服务器的管理-》SQL server代理->作业->中,找到该发布的发布JOB,在属性->步骤->2运行代码程序-》编辑->命令->在命令语句最后添加 - skiperrors xxxx(xxxx是分发时报的错误号) , 指的是忽略该错误的意思。
b、然后重新启动分发引擎。
2. 如何输出出错的信息?
在待输出出错信息的JOB命令最后加入 -Output c:\temp\error.txt, -Output
是命令,后面是待输出的文件路径和文件夹名.
因为该发布不允许使用可更新的订阅,当 IDENTITY 列被传输到订阅服务器时,不会传输 IDENTITY 属性。(例如,在发布服务器上定义为 INT IDENTITY 的列在订阅服务器上将定义为 INT。)
如果想将 IDENTITY 属性传输到订阅表,则必须进行如下操作:
1. 使用 IDENTITY 属性和 NOT FOR REPLICATION 选项手工创建订阅表。您可以通过让 SQL Server 在应用快照之前执行自定义脚本来执行该操作。若要指定自定义脚本,请先创建发布,再创建脚本,然后在发布属性的“快照”选项卡
上输入该脚本的名称。
2. 设置名称冲突项目属性,以便 SQL Server 在订阅服务器上应用快照时不会除去现有的表。该属性在项目属性的“快照”选项卡上。SQL Server 要求发布的存储过程所引用的所有对象(如表和用户定义函数)在订阅服务器上都可用。如果引用的对象在此发布中未作为项目发布,则它们必须在订阅服务器上手工创建。

高分悬赏 mysql多表查询,并统计的问题
查询Sql: select nameid ,name, count(*) from table2 a left join table 1 b on a.name = b.name group by a.nameid 第2种 : 数据量较多修改数据结构复杂时使用 把数据库数据遍历一遍,生成log文件 第3种: 使用其它搜索引擎,如coreseek ---第2种方法具体内容--- 表结构固定的情况下...

高分悬赏。。。pb中配置mss microsoft sql server数据源的问题...
看你的发的图片是在pb的db profile中设置的问题.一.sql server服务管理器是否启动.二.你连接的数据库名字不对.你可以参考一下设置来修改你的设置:\/\/ Profile fc_ncyl SQLCA.DBMS = "MSS Microsoft SQL Server"SQLCA.Database = "数据库名"SQLCA.ServerName = "服务器或者本机计算机名"SQLCA.Log...

高分悬赏!Cadence库制作问题。管脚同名问题。
1、不重名GND1,GND2,GND3...2、可以重名,把重名的管脚属性设成Power属性

回答下面的问题,高分悬赏
在地图上,指向图上任何位置,都能够知道这个地方或对象的名字以及其它相关的属性信息。 地图可以标明你所处的位置。如果你的地图可以实时地输入全球定位系统(GPS)的数据,你就能看到你在哪里、以多快的速度在旅行并且你的旅途目的地在何方。 地图可以让你识别用其它方式不能体现的空间分布、关系和趋势。人口统计学家通...

高分悬赏-怎么查找很多个EXCEL表格中相同的数据
可以使用countif()函数。这样可以查出其他表格中等于特定单元格的数目。比如:输入=COUNTIF(Sheet1!A2:E46,Sheet2!F2)表示在sheet1中的A2到E46单元格中与sheet2中F2单元格相同的单元格的数目。如图所示:只要是得到的数据不是1,那肯定是重复的,你可以用筛选的方法找出来。

java问题,高分悬赏!!!
java问题,高分悬赏!!! 两个问题:一,java数据库的链接能给个实际例子一步步解说给“学生”听吗?二,数据包的导入问题。(二可以简单的说说,重点是问题一)。我学了java有3个月了,感觉不是那么熟练。分数... 两个问题:一,java数据库的链接能给个实际例子一步步解说给“学生”听吗?二,数据包的导入问题。(二...

关于自己四级查询的一个问题! (高分悬赏)
一般而言,网上成绩发布时都是出自于同一个发布渠道,也就是说,成绩是固定的,在不同的网站可以查询到而已。如果网上查询的成绩和成绩单不一样,可以申请官方批卷方重新审核成绩。全国大学英语四、六级考试(CET)系教育部主办、教育部考试中心主持和实施的一项大规模标准化考试。自1987年开始实施以来,四...

高分悬赏,概率问题:
解:1. 设其中一个人已经固定,两一个人要一样,只有1中可能,但是第二个总共有C(30,2)=435种 所以概率是p=1\/435 2. 还是设一个人的休息日已经固定,那么仅有一个相同的概率是C(2,1)×C(28,1)=56种 所以概率是p=56\/435 ...

数模问题!高分悬赏!答案好的追加分!数模高手帮忙!谢谢~
再用1474-1312=162,所以下一个是加137 1312+137=1449<1474 再用1474-1449=25,发现数据中没有比25小的 所以第一次结束 第一次851+461+137 接下来再处理剩下的13个数 46KB,55KB, 62KB,87KB,108KB,114KB,164KB,253KB,364KB,372KB,388KB,406KB,432KB 从13个数据中依次由大到小...

急呀!多普达d700 用数据线无法同步,请求解决方法!(50分高分悬赏了)
我也是用的D700 绝对是数据线和ROM的问题。我的也出现过。后来换了线也是一样,然后再刷别的ROM就好了,现在都没有出问题。我也很少同步。

相似回答