首页 / MSSQL / SQL Server 跨库同步数据
SQL Server 跨库同步数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SQL Server 跨库同步数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2343字,纯文字阅读大概需要4分钟。
内容图文
![SQL Server 跨库同步数据](/upload/InfoBanner/zyjiaocheng/1073/3f323735f8564eecb4d093d41bddd008.jpg)
最近有个需求是要跨库进行数据同步,两个数据库分布在两台物理计算机上,自动定期同步可以通过SQL Server代理作业来实现,但是前提是需要编写一个存储过程来实现同步逻辑处理。这里的存储过程用的不是opendatasource,而是用的链接服务器来实现的。存储过程创建在IP1:192.168.0.3服务器上,需要将视图v_custom的客户信息同步到IP2:192.168.0.10服务器上的t_custom表中。逻辑是如果不存在则插入,存在则更新字段。
1createPROCEDURE[dbo].[p_pm_项目平台客户批量同步到报销平台]( 2@destservernvarchar(50), 3@sourceservernvarchar(50) 4) 5AS 6BEGIN 7 8SET NOCOUNT ON; 9--不存在则添加链接服务器,外部查询必须指明IP地址,例如 select * from [IP].[database].[dbo].[table]10ifnotexists (select*from sys.servers where server_id!=0and data_source=@destserver) 11begin12exec sp_addlinkedserver @server=@destserver13end14ifnotexists (select*from sys.servers where server_id!=0and data_source=@sourceserver) 15begin16exec sp_addlinkedserver @server=@sourceserver17end18begin try 19set xact_abort on20begintransaction21--http://www.cnblogs.com/chnking/archive/2007/04/04/699891.html 22INSERTINTO[192.168.0.10].[dbCRM].[dbo].[t_custom] (客户ID, 2324 客户名称, 25 客户简称, 26 输入码, 27 查询码, 28 地址, 29 录入登录名, 30 录入时间, 31 修改登录名, 32 修改时间, 33 审批状态ID, 34 审批状态名称, 35 是否审批结束, 36 审批操作时间, 37 项目管理客商编码, 38 序号) 39SELECT A.客户ID,A.客户名称, 40 A.客户简称, 41 dbo.fn_pm_GetPy(A.客户名称), 42 A.客户编号+‘,‘+A.客户名称+‘,‘+dbo.fn_pm_GetPy(A.客户名称)+‘,‘+A.客户简称+‘,‘+dbo.fn_pm_GetPy(A.客户简称), 43 A.地址, 44‘admin‘, 45getdate(), 46null, 47null, 48‘D65F87A8-79C8-4D1C-812D-AE4591E056A8‘, 49‘已审批‘, 501, 51 A.审批操作时间, 52 A.项目管理客商编码, 53054FROM[dbPM].[dbo].[v_custom] A 55WHERE A.客户ID NOTIN ( SELECT 客户ID FROM[192.168.0.10].[dbCRM].[dbo].[t_custom]); 56575859----------------------------------存在更新----------------------------------- 60update A set61 A.客户名称=B.客户名称, 62 A.客户简称=B.客户简称, 63 A.输入码=dbo.fn_pm_GetPy(B.客户名称), 64 A.查询码=B.客户编号+‘,‘+B.客户名称+‘,‘+dbo.fn_pm_GetPy(B.客户名称)+‘,‘+B.客户简称+‘,‘+dbo.fn_pm_GetPy(B.客户简称), 65 A.地址=B.地址, 66 A.修改登录名=‘admin‘, 67 A.修改时间=getdate(), 68 A.项目管理客商编码 =B.项目管理客商编码 69from[192.168.0.10].[dbCRM].[dbo].[t_custom] A,[dbPM].[dbo].[v_custom] B 70where A.客户ID=B.客户ID; 71727374committransaction75end try 76begin catch 77select ERROR_NUMBER() as errornumber,ERROR_MESSAGE() as errormsg,ERROR_LINE() as errorline 78rollbacktransaction79end catch 80END
如果没有正确配置,经常会出现 消息 7391,级别 16,状态 2,过程 xxxxx,第 XX 行 。无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务。
可以参照如下的配置:
具体可以参看:http://www.cnblogs.com/chnking/archive/2007/04/04/699891.html
原文:http://www.cnblogs.com/lonelyxmas/p/5197598.html
内容总结
以上是互联网集市为您收集整理的SQL Server 跨库同步数据全部内容,希望文章能够帮你解决SQL Server 跨库同步数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。