资源描述:
《通过创建sqlserver2005到oracle10g的链接服务器实现异构数据库数据转换方案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1、新建链接服务器的方法 在图1中选中“链接服务器”,右键选择“新建链接服务器”,如图2,配置相关参数。2、配置相关参数在“常规”选项中,填写“链接服务器名称”,访问接口选中“MicrosoftOLEDBProviderforOracle”项。其中产品名称、数据源、访问接口字符串请填写配置的Oracle客户端在本地配置的net服务名。如图3所示。在“安全性”项中,选中使用此安全上下文建立连接,填写远程登录用户和密码,即登录远程Oracle服务器的用户和密码。如图4所示。3、异构数据库访问语句格式比如我们建立了链接服务器ORADBCONN,而Oracl
2、e中在HRSOFT用户下面建立了表WEBUSER,那么我们的SQL语句就是:--清空Oracle表中的数据DELETE FROM ORADBCONN..HRSOFT.WEBUSER--将SQLServer中的数据写到Oracle中INSERT into ORADBCONN..HRSOFT.WEBUSERSELECT*FROMWEBUSER如果报告成功,那么我们的数据就已经写入到Oracle中了。用SELECT* FROM ORADBCONN..HRSOFT.WEBUSER查看Oracle数据库中是否已经有数据了。4、链接服务器应用A、查询Oracle
3、数据表方式一(这种方式,当Oracle与SQLServer的数据类型不一致时经常报错,且速度稍慢):select*from[LINK2ORACLE]..[ORACLE_USER_NAME].TABLE_NAME; 我在执行该语句经常报类似错误信息:链接服务器"LINK2ORACLE"的OLEDB访问接口"MSDAORA"为列提供的元数据不一致。对象""CMCC"."OS2_GIS_CELL""的列"ISOPENED"(编译时序号为20)在编译时有130的"DBTYPE",但在运行时有5。 B、查询Oracle数据表方式二(经试验,这种方式使用起来
4、很顺畅,不报错,且速度几乎和在Oralce中一样快): select*fromopenquery(LINK2ORACLE,'select*fromOracleUserName.TableName') 您可以把openquery()当成表来使用。 C、举个例子(将Oralce用户HRSOFT下的用户表WEBUSER导入到SQLServer2005数据库中): select*intoOS_GIS_WEBUSERfromopenquery(LINK2ORACLE,'select*fromHRSOFT.WEBUSER) D、更便捷的方式:通过创建同
5、义词进行便捷查询: CREATESYNONYMOS_GIS_CELLFOR[ORACLELK]..[CMCC].OS_GIS_CELL; select*fromos_gis_cell; select*fromos_gis_cellawherea.CellNameisnull;注意:涉及Oracle部分的SQL语句,尤其是[ORACLELINK]..[ORACLE_USER_NAME].TABLE_NAME一定要大写,否则会报类似错误:消息7314,级别16,状态1,第1行链接服务器"ORACLELK"的OLEDB访问接口"MSDAORA"不包含
6、表""CMCC"."OS2_gis_CELL""。该表不存在,或者当前用户没有访问该表的权限。配置數據源:工程INPLAN:(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.6)(PORT=1521)))(CONNECT_DATA=(SID=sa)(SERVER=DEDICATED)))ERP:(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.25)(PORT=1528)))(CONNEC
7、T_DATA=(SID=TJTEST))) (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.25)(PORT=1528)))(CONNECT_DATA=(SID=TJTEST)))新建作業里的代碼:delete fromXBLD_InformationINSERTINTO XBLD_Information(job_name,num_layers,JB_PP1,JB_PC1,JB_PP2,JB_PC2,JB_PP3,JB_PC3,PP_PP1,PP_PC1,PP_PP2
8、,PP_PC2,PP_PP3,PP_PC3,PP_PP4,PP_PC4,BM)select*fromopen