WEB开发网
开发学院数据库Oracle Oracle与SQL Server之间的数据迁移 阅读

Oracle与SQL Server之间的数据迁移

 2009-05-12 13:13:53 来源:WEB开发网   
核心提示: SQL>CREATETABLEall_users@tg4msqlFRINall_users;ERROR 位于第 1 行,ORA-02021: 不允许对远程数据库进行 DDL 操作,Oracle与SQL Server之间的数据迁移(3),二、SQL访问ORACLE的方法1 通过行集函数

SQL>CREATE TABLE all_users@tg4msql FRIN all_users;

ERROR 位于第 1 行。ORA-02021: 不允许对远程数据库进行 DDL 操作。

二、SQL访问ORACLE的方法

1 通过行集函数OPENDATASOURCE

OPENDATASOURCE ( provider_name, init_string )

SELECT *

FROM OPENDATASOURCE(

 'MSDAORA',

 'Data Source=xzh.oracle;User ID=POS;Password=POS')..POS.A0325

MSDAORA是OLEDB FOR ORACLE的驱动,初始化字符串指定本地服务名、用户名、口令。然后引用表中数据时要以服务器..用户名.表名。注意一定是四部分组成,用户名与表名一定要大写。

SELECT * INTO PUBS.DBO.A0325 FROM 

OPENDATASOURCE(

 'MSDAORA',

 'Data Source=xzh.oracle;User ID=POS;Password=POS' )..POS.A0325

将ORACLE中POS模式的A0325导入SQL的PUBS数据库。

2 通过SQL的链接服务器引用ORACLE的数据

查看已经存在的链接服务器

SELECT*FROM SYSSERVERS

添加链接服务器到SQL:

EXEC SP_ADDLINKEDSERVER

  @server = 'ORCL',ORCL是SQL中链接服务器名称

  @srvproduct = 'Oracle',  Oracle固定的

  @provider = 'MSDAORA',MSDAORA  固定的

  @datasrc = 'xzh.oracle' DataSrc 本地服务名

  EXEC SP_DROPSERVER ‘ORCL’删除链接服务器

在这里声明一下,如果现在就访问ORACLE肯定不能,因为没有提供登录ORACLE的用户名/口令EXEC SP_ADDLINKEDSRVLOGIN 'ORCL', false, 'sa', 'POS', 'POS'Sa是SQL本地登录帐号,POS/POS是ORACLE的登录帐号,但这句话对我们要达到的目的没有帮助。

SELECT * FROM ORCL..POS.A0325

还是四部分组成,注意事项同上,为什么不行呢,本人一直在寻找解决办法,最后发现通过SQL语句没法解决,只有打开SQL的企业管理器。

SELECT * FROM ORCL..POS.A0325  --这次终于OK。

SELECT * FROM OPENQUERY(ORCL, 'SELECT * FROM POS.A0325')

3 使用SQL的OPENROWSET函数

 SELECT a.*

FROM OPENROWSET('MSDAORA',

 'xzh.oracle';'POS';'POS', POS.A0325) AS a ORDER BY a.ID

有些地方要用别名才能引用,请大家注意。

4使用ODBC的方式

SELECT A.*

FROM OPENROWSET('MSDASQL','ORCL_ODBC';'POS';'POS',

  POS.A0325) AS A

ORDER BY A.ID

ORCL_ODBC是ORACLE的ODBC数据源,创建ODBC不用我说吧,以上所有代码在SQL QUERY ANALYZE 中通过。

三 总结

关于SQL访问ORACLE有四种方式,其中通过ODBC与链接服务器的方式做起来难度较大,对手新手会麻烦一些,使用OLE DB FOR ORACL驱动时,有OPENDATASOURCE与OPENROWSET函数可以使用,都很方便,笔记喜欢使用后者,交待一下,在数据存取方面,这四种方面效率相当。 

上一页  1 2 3 

Tags:Oracle SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接