关于发布和订阅

kdjceoajcy2dc 2014-07-22 03:08:31
大家好,数据库版本是2008 R2企业版,现在老板要求做读写分离。
问题一、请问除了发布订阅之外有什么可行的方案?
问题二、我尝试做了事务发布,平均延迟在5秒左右,请问这个结果正常不?
问题三、假如我只同步几个列,如何不让系统自动修改订阅服务器上的表结构?现在每次发布快照就会把没选上的列给删了?
...全文
153 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
kdjceoajcy2dc 2014-07-22
  • 打赏
  • 举报
回复
引用 17 楼 u013226693 的回复:
20037一般是有特殊字符导致的,如果可以停写,试试手动导入初始化数据,再添加不初始化的订阅看看;
木有,全部是阿拉伯数字,试过重新初始化,照样继续报错,不过这个问题不是很大,客户只要求精确到表来操作
發糞塗牆 2014-07-22
  • 打赏
  • 举报
回复
《Pro SQL Server 2008 Replication》
俺是大菠萝 2014-07-22
  • 打赏
  • 举报
回复
20037一般是有特殊字符导致的,如果可以停写,试试手动导入初始化数据,再添加不初始化的订阅看看;
發糞塗牆 2014-07-22
  • 打赏
  • 举报
回复
英文的。。。
kdjceoajcy2dc 2014-07-22
  • 打赏
  • 举报
回复
引用 13 楼 DBA_Huangzj 的回复:
Service Broker以队列方式操作,实时性不如事务复制
对SQL Server发布订阅的运行机制不是很清楚,请问是否有相关的资料借鉴?
kdjceoajcy2dc 2014-07-22
  • 打赏
  • 举报
回复
引用 9 楼 u013226693 的回复:
关于问题三: 需要手动在订阅端创建完整列的表,然后在项目属性中,选择“保持现有对象不变”,再进行快照初始化即可;
菠萝兄的方法是正确的,我试过,后来运行到一半报了MSSQL_REPL20037这个错误,我是参照以下方法解决的,具体原因还没时间去探究 http://social.msdn.microsoft.com/Forums/sqlserver/zh-CN/c62545f7-0211-49c4-958f-8bd039d086e3/the-process-could-not-bulk-copy-into-table-dbocomplaint-source-mssqlrepl-error-number?forum=sqlreplication
發糞塗牆 2014-07-22
  • 打赏
  • 举报
回复
Service Broker以队列方式操作,实时性不如事务复制
唐诗三百首 2014-07-22
  • 打赏
  • 举报
回复
引用 11 楼 raikkonenwang 的回复:
请问Service Broker实时性如何?链接服务器加触发器是不太可能的啦
Service Broker是实时传送的.
kdjceoajcy2dc 2014-07-22
  • 打赏
  • 举报
回复
引用 7 楼 ap0405140 的回复:
主要是解决服务器间数据同步的问题, 除了发布订阅之外,还可以用链接服务器+触发器或service broker进行同步.
请问Service Broker实时性如何?链接服务器加触发器是不太可能的啦
發糞塗牆 2014-07-22
  • 打赏
  • 举报
回复
参考菠萝兄的方法
俺是大菠萝 2014-07-22
  • 打赏
  • 举报
回复
关于问题三:
需要手动在订阅端创建完整列的表,然后在项目属性中,选择“保持现有对象不变”,再进行快照初始化即可;

發糞塗牆 2014-07-22
  • 打赏
  • 举报
回复
引用 6 楼 raikkonenwang 的回复:
[quote=引用 5 楼 DBA_Huangzj 的回复:] 单机情况下,估计是磁盘IO问题,也可能表上有很多约束、索引等
磁盘IO不大,表很干净,就一个主键和一个列,没有其它的列。不知道SQL Server有没有类似Oracle的资源管理计划,限定一个用户组只能使用多少资源?[/quote]问题应该不在资源管理方面。你先停用其他发布,留一个,数据量减少一点,看看会不会快一点
唐诗三百首 2014-07-22
  • 打赏
  • 举报
回复
主要是解决服务器间数据同步的问题, 除了发布订阅之外,还可以用链接服务器+触发器或service broker进行同步.
kdjceoajcy2dc 2014-07-22
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
单机情况下,估计是磁盘IO问题,也可能表上有很多约束、索引等
磁盘IO不大,表很干净,就一个主键和一个列,没有其它的列。不知道SQL Server有没有类似Oracle的资源管理计划,限定一个用户组只能使用多少资源?
發糞塗牆 2014-07-22
  • 打赏
  • 举报
回复
单机情况下,估计是磁盘IO问题,也可能表上有很多约束、索引等
kdjceoajcy2dc 2014-07-22
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
问题二、我是在同一台服务器上做的,平均每分钟向5个表各插入15000条数据。 如果插入15000是同时发生,5秒过得去,可能日志方面可以优化一下 问题三:在订阅端我记得可以做修改,暂时没环境截图,你可以找一下发布项的属性那里
先谢谢这位兄台,我测试过小数据量,时间间隔没太大的优化,除了日志外,可能哪方面出了问题?
發糞塗牆 2014-07-22
  • 打赏
  • 举报
回复
问题二、我是在同一台服务器上做的,平均每分钟向5个表各插入15000条数据。 如果插入15000是同时发生,5秒过得去,可能日志方面可以优化一下 问题三:在订阅端我记得可以做修改,暂时没环境截图,你可以找一下发布项的属性那里
kdjceoajcy2dc 2014-07-22
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
问题一、请问除了发布订阅之外有什么可行的方案? 实时读写分离目前只有复制技术了,不实时的就大把。 问题二、我尝试做了事务发布,平均延迟在5秒左右,请问这个结果正常不? 我这边,网络好的话1~3、4秒左右,如果大批量数据修改就不一样。5秒略长了一点点。5秒一下较为合理。但是这个没有标准值 问题三、假如我只同步几个列,如何不让系统自动修改订阅服务器上的表结构?现在每次发布快照就会把没选上的列给删了? 你定义发布项的时候就可以选择哪个/些表的哪些列,还是全表发布的。
问题二、我是在同一台服务器上做的,平均每分钟向5个表各插入15000条数据。 问题三、我的意思是说,如果我只选中其中两个列,发布快照后,系统会自动修改订阅数据库对应表的结构,比如说对于表A(C1,C2,C3),如果我只选C1,C2这两个列,到时订阅服务器上的表结构会从(C1,C2,C3)变成(C1,C2),即C3被删除了。
發糞塗牆 2014-07-22
  • 打赏
  • 举报
回复
问题一、请问除了发布订阅之外有什么可行的方案? 实时读写分离目前只有复制技术了,不实时的就大把。 问题二、我尝试做了事务发布,平均延迟在5秒左右,请问这个结果正常不? 我这边,网络好的话1~3、4秒左右,如果大批量数据修改就不一样。5秒略长了一点点。5秒一下较为合理。但是这个没有标准值 问题三、假如我只同步几个列,如何不让系统自动修改订阅服务器上的表结构?现在每次发布快照就会把没选上的列给删了? 你定义发布项的时候就可以选择哪个/些表的哪些列,还是全表发布的。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧