设为首页 收藏本站
查看: 760|回复: 0

[经验分享] SQL Server同步数据到服务器oracle数据库中

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-18 10:37:24 | 显示全部楼层 |阅读模式
想要将SQL Server 2000中的数据实时同步到远程服务器oracle数据库中,我的采取的方案是这样的:1、SQL Server 2000与oracle数据库建立连接;2、使用SQL Server 2000中的“作业”功能,每一个小时触发一次并上传前一个小时的所有数据。(由于使用触发器无法向远程服务器中插入数据,所以选择此方案来同步数据,但这就不是真正意义上的实时同步数据了。)   首先因为客户端与服务端数据库版本不同和驱动版本不同等等原因,直接使用SQL Server 2000中的ole db oracle驱动是无法直接与Oracle数据库建立连接。所以我们选择自己安装相应的Oracle数据库的ODBC驱动,然后使用ODBC数据源来连接服务器数据库。而安装ODBC驱动的方法在此网址中:http://wenku.baidu.com/link?url= ... -fCneuerg8ztjBBEJzC(切记:TNS Service Name所填写的是服务器的IP地址和数据库名。如,192.168.1.99/orcl)
   准备工作完成之后,我们开始连接服务器。让SQL Server 2000与服务器进行连接,点击“安全性”展开目录选项,右击“连接服务器”选项,选择“新建连接”,弹出如下对话框:
wKioL1fbctegdjwEAASczY8CVN0636.jpg
   选择Mocrosoft OLE DB Provider for ODBC选项,然后填入服务器名称,产品名称和数据源(注意:数据源填入我们新建的ODBC数据源名称)。之后选择“安全性”选项卡,进入如下界面:
wKiom1fbc3vilk3-AAFip8Gs8tU927.jpg
   选择“用此安全上下文进行”选项,也就是最后一项。填入scott用户名和密码,再点击确定,至此服务器连接已经创建完毕。然后我们点击新建的服务器,然后再双击其名下的表,如果在右方出现服务器Oracle数据库中的表,则说明我们创建的连接已经成功。
   如果连接失败,可能是因为如下服务没有开启的缘故,将其启动并设为自动模式即可:
wKioL1fbc_rjYS4KAALeG2nY2C8305.jpg



   服务器连接成功之后,所需要做的就是将SQL Server 2000中的数据实时同步到服务器中去。因此我们使用SQL Server 2000数据库中的“作业”来进行数据库的实时上传操作。
   首先打开“管理”->“SQL Server代理”,然后再右击“作业”选项,选择“新建作业”子选项,弹出作业设置选项框,如下所示:
wKiom1fbdKPwLkB9AAVzVYAQTLw304.jpg
   在“常规”选项卡中对作业进行命名;然后进入“步骤”选项卡,点击“新建步骤”,进入步骤配置:步骤名可以随意取,选择客户端需要上传数据的数据库,最后写入上传数据代码。
   例如:
   语句1:insert into openquery(DTSW,'select * from 表名') select  * from 表名 where 日期=convert(varchar(100),GETDATE(),111) and convert(varchar(100),dateadd(hh,-1,GETDATE()),8)<时间 and 时间<convert(varchar(100),GETDATE(),8) order by 时间 DESC;
   语句2:insert into openquery(DTSW,'select * from 表名') select  * from 表名 where 日期=convert(varchar(100),dateadd(dd,-1,GETDATE()),111) and convert(varchar(5),GETDATE(),8)=’00:00’ and ‘23:00:00’<时间 and 时间<=’23:59:00’ order by 时间 DESC;
   “语句1”的功能:将最近最近一段时间插入SQL Server 2000的数据上传至服务器中,上述“语句1”中的-1表示一次插入当前时间的前1个小时的数据(说明:可将-1改为-4,则表示每一次插入当前时间的前4个小时的数据,并且此数值将与下面的两个步骤关联使用)。
   “语句2”的功能:因为作业调度的关系,我们使用“语句1”是无法获取当天晚上23:00:00以后的数据的,所以我们需要在当系统时间为00:00:00的时候,获取一次前一天最后1小时的数据来插入数据库中(说明:此处的23:00:00是根据语句1来更改的,如果语句1中-1改为-4,则需要将语句2的23:00:00改为19:00:00)。
   openquery(DTSW,'select * from 表名')语句是用于请求获取服务器中的某个表的,DTSW是我们新建链接的链接服务器名,后一个参数是选择所需服务器中表的sql语句。convert(varchar(100),dateadd(hh,-1,GETDATE()),8)用于时间的显示格式设置,其中dateadd(hh,-1,GETDATE())函数用于更改当前系统时间,此语句表示所得时间为当前系统时间的前1个小时时间。

   再进入“调度”选项卡中点击“新建调度”按钮,进入调度设置界面,再点击“更改”按钮,发生频率选择每天,每日频率按照需求选择(说明:选择发生周期,并且将单位设为小时,然后根据上述语句1中的数值来填选。如-1,填1小时;-4,填4小时)。如下图所示:
wKioL1fbd8qDa1oiAALXT6X1XsE993.jpg
   “作业”设置完毕后,其中会出现所新建的作业并显示运行状态。(注意:如果在作业新建完成后,状态显示中“下次运行时间”栏如果显示未知,则表示“作业”启动。看看如下服务是否启动。)
wKioL1fbeMHCe6wWAAGOVQTPUMw908.jpg
wKiom1fbeMPi6VXRAADvzWgKZns356.jpg
   至此,便实现了数据的同步上传。(接下来可研究如何利用触发器进行实时同步上传)



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-273865-1-1.html 上篇帖子: 數據的導入 下篇帖子: sql优化-项目实战 oracle 服务器 数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表