SQL Server使用存储过程定时同步数据
2007-09-04 12:04
197 查看
SQL Server使用存储过程定时同步数据 |
发表于:2007-8-18 12:27:39 |分类:SQL Server |浏览(8) |评论(0) |引用(0) |天气: |
· See also: http://topic.csdn.net/t/20060221/16/4568664.html http://www.orsoon.com/Article/Article_19615.html 最近做联通彩信的业务,有个彩信图片投票的项目,项目里面涉及了,短信、彩信和页面 三个方面,各自使用了不同的数据,于是有了数据交换和同步的问题,这里记录一下,我 彩信和页面数据同步的一个过程。 关于数据同步的问题,互联网上大都是采用SQL SERVER 的出版物、订阅的方式来处理 复制的;这里由于数据比较简单,仅仅是把彩信上行来的数据(两个表,一对多的关系) 提出来,插入到页面的数据库中的一个过程,所以,我没有使用上面提到的方式,而是写 了一个存储过程完成的同步,整个过程如下: 测试环境及同步要求: 有数据库服务器MMS和WEB,两台电脑能互相访问,有数据 服务器MMS.库名.MMS_RecvPrimaryInfo表:有字段:senderAddress,subject,createtime,transactionID 服务器MMS.库名.MMS_RecvDetailInfo表: 有字段CONTENT 服务器WEB.库名.UPMMS表: 有字段:DT,TITLE,UPDATETIME,transactionID 要求: MMS.库名.MMS_RecvPrimaryInfo增加记录则WEB.库名.UPMMS记录增加 MMS.库名.MMS_RecvDetailInfo表中对应记录的部分数据更新到WEB.库名.UPMMS新增记录中 步骤: 1、在库MMS中建立视图,通过向导建立彩信两个表的一个视图,连接两个表的主键 SQL语句: CREATE VIEW dbo.UNI_CWDS_View AS SELECT dbo.MMS_RecvPrimaryInfo.senderAddress, dbo.MMS_RecvPrimaryInfo.toAddress, dbo.MMS_RecvPrimaryInfo.createtime, dbo.MMS_RecvPrimaryInfo.subject, dbo.MMS_RecvDetailInfo.toFile, dbo.MMS_RecvDetailInfo.contentType, dbo.MMS_RecvPrimaryInfo.transactionID FROM dbo.MMS_RecvPrimaryInfo INNER JOIN dbo.MMS_RecvDetailInfo ON dbo.MMS_RecvPrimaryInfo.transactionID = dbo.MMS_RecvDetailInfo.transactionId 2、确定需要同步的字段,将这些字段的类型统一为完全相同 3、环境准备: a.在MMS上创建连接服务器,以便在MMS中操作WEB,实现同步: SQL语句: exec sp_addlinkedserver 'web','','SQLOLEDB','60.xxx.xxx.xxx,2433' exec sp_addlinkedsrvlogin 'web','false',null,'username','password' go b.在MMS和WEB这两台电脑中,启动 msdtc(分布式事务处理服务),并且设置为自动启动 我的电脑--控制面板--管理工具--服务--右键Distributed Transaction Coordinator --属性--启动--并将启动类型设置为自动启动 go 4、实现同步处理的方法1:定时同步(存储过程sysn_unicwdd) --同步数据存储过程 sysn_unicwdd create proc sysn_unicwdd as --插入新增的数据 insert web.CWDDMMS_Vote.dbo.UPMMS(DT,TITLE,UPDATETIME,transactionID) select distinct senderAddress,subject,createtime,transactionID from UNI_CWDS_View i where toaddress='9800701' and not exists( select * from web.CWDDMMS_Vote.dbo.UPMMS where transactionID=i.transactionID) --更新修改过的数据 update b set CONTENT=i.toFile from web.CWDDMMS_Vote.dbo.UPMMS b,UNI_CWDS_View i where b.transactionID=i.transactionID and contentType='text/plain' update b set IMG=i.toFile from web.CWDDMMS_Vote.dbo.UPMMS b,UNI_CWDS_View i where b.transactionID=i.transactionID and contentType like 'image%' 5、创建一个作业定时调用上面的同步处理存储过程就行了 企业管理器 --管理 --SQL Server代理 --右键作业 --新建作业 --"常规"项中输入作业名称 --"步骤"项 --新建 --"步骤名"中输入步骤名 --"类型"中选择"Transact-SQL 脚本(TSQL)" --"数据库"选择执行命令的数据库 --"命令"中输入要执行的语句: exec sysn_unicwdd --确定 --"调度"项 --新建调度 --"名称"中输入调度名称 --"调度类型"中选择你的作业执行安排 --如果选择"反复出现" --点"更改"来设置你的时间安排 然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 我的电脑--控制面板--管理工具--服务--右键SQLSERVERAGENT--属性 --启动类型--选择"自动启动"--确定. |
相关文章推荐
- SQL Server 2005使用发布、订阅实现数据同步
- SQL Server 定时访问url激活数据同步示例
- 一、 使用存储过程实现数据分页(Sql Server 2008 R2)
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程)
- SQL Server - 使用 Merge 语句实现表数据之间的对比同步
- SQL Server 使用 Merge 关键字进行表数据同步
- SQL Server - 使用 Merge 语句实现表数据之间的对比同步
- 使用 Python 在 Caché 和 Sql Server 之间同步数据
- 使用Red Gate Sql Data Compare 数据库同步工具进行SQL Server的两个数据库的数据比较、同步
- SQL Server 2008空间数据应用系列十:使用存储过程生成GeoRSS聚合空间信息
- 使用C#实现sql server 2005 和Oracle 数据同步
- 【转载】SQL Server - 使用 Merge 语句实现表数据之间的对比同步
- SQL Server - 使用 Merge 语句实现表数据之间的对比同步
- SQL SERVER使用存储过程 清除表数据
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程)
- SQL Server - 使用 Merge 语句实现表数据之间的对比同步
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程)
- solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程) 分类: 数据库
- 使用oracle定时任务和存储过程实现数据拷贝