想要将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=VcmA9Y19IfdqkpxVQldtEna2N7hZI0oHq3nqJdg-2wMuc2pD4zo_3By3DMaDFU7J5OXNQL_RYd9vMGDWp0NGGYU5-fCneuerg8ztjBBEJzC(切记:TNS Service Name所填写的是服务器的IP地址和数据库名。如,192.168.1.99/orcl)

   准备工作完成之后,我们开始连接服务器。让SQL Server 2000与服务器进行连接,点击“安全性”展开目录选项,右击“连接服务器”选项,选择“新建连接”,弹出如下对话框:

wKioL1fbctegdjwEAASczY8CVN0636.png

  选择Mocrosoft OLE DB Provider for ODBC选项,然后填入服务器名称,产品名称和数据源(注意:数据源填入我们新建的ODBC数据源名称)。之后选择“安全性”选项卡,进入如下界面:

wKiom1fbc3vilk3-AAFip8Gs8tU927.png

   选择“用此安全上下文进行”选项,也就是最后一项。填入scott用户名和密码,再点击确定,至此服务器连接已经创建完毕。然后我们点击新建的服务器,然后再双击其名下的表,如果在右方出现服务器Oracle数据库中的表,则说明我们创建的连接已经成功。

  如果连接失败,可能是因为如下服务没有开启的缘故,将其启动并设为自动模式即可:

wKioL1fbc_rjYS4KAALeG2nY2C8305.png

   

   


   服务器连接成功之后,所需要做的就是将SQL Server 2000中的数据实时同步到服务器中去。因此我们使用SQL Server 2000数据库中的“作业”来进行数据库的实时上传操作。

   首先打开“管理”->“SQL Server代理”,然后再右击“作业”选项,选择“新建作业”子选项,弹出作业设置选项框,如下所示:

wKiom1fbdKPwLkB9AAVzVYAQTLw304.png

   在“常规”选项卡中对作业进行命名;然后进入“步骤”选项卡,点击“新建步骤”,进入步骤配置:步骤名可以随意取,选择客户端需要上传数据的数据库,最后写入上传数据代码。

   例如:

   语句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.png

   “作业”设置完毕后,其中会出现所新建的作业并显示运行状态。(注意:如果在作业新建完成后,状态显示中“下次运行时间”栏如果显示未知,则表示“作业”启动。看看如下服务是否启动。

wKioL1fbeMHCe6wWAAGOVQTPUMw908.png

wKiom1fbeMPi6VXRAADvzWgKZns356.png

   至此,便实现了数据的同步上传。(接下来可研究如何利用触发器进行实时同步上传)