视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
sql server连oracle
2025-10-02 13:58:26 责编:小OO
文档
如何让sql server 链接oracle

1SQL Server 2005 连接 Oracle 

1、先在客户端安装 Oracle 客户端并配置好,使其能够连接 Oracle 服务器,配置过程略。

2、以 SA 身份登录到 SqlServer 2005 中,依次打开:服务器对象 -> 链接服务器,右键 链接服务器 -> 新建链接服务器。

如下图:

常规选项卡:

链接服务器,可以自己随便定义。这里暂定为:ORACLE-TEST

访问接口选择:Microsoft OLE DB Provider for Oracle

产品名称:描述产品,这里暂且用:Oracle

 数据源 Oracle 客户端连接 Oracle 的别名

  

 点击安全性选项卡:

   如下图: 

 

  选择 “使用此安全上下文建立连接”。

  远程登录:这里为 Oracle 用户名

  使用密码:这里为 Oracle 用户的密码

点击确定,完成配置。

在SQL查询分析器中,可以用以下语句访问 Oracle 数据库

 SELECT * FROM ORACLE_TEST(链接服务器名)..USERNAME(ORACLE 用户名).TABLENAME(ORACLE 数据表)

注:该语句的‘FROM’后一定是大写才行。

另外还可以使用如下查询

SELECT * FROM OPENQUERY(ORACLE_TEST(链接服务器名),’SELECT * FROM TABLENAME(ORACLE数据表)’ );

注:链接服务器名要大写

这里就可以对Oracle数据库进行操作了。

示例:

下面两种方法都是查询ORCLE里的数据

(1)  SELECT * FROM OPENQUERY (ORACLE_TEST,' SELECT * FROM PRPDUSER ');

(2)  SELECT * FROM ORACLE_TEST..PAYTEST.PRPDUSER;

--下面两种方法都是把ORACLE数据往SQLSERVER里插入

(1)  INSERT INTO PRPDUSER SELECT * FROM ORACLE_TEST..PAYTEST.PRPDUSER WHERE USERCODE='5001004138';

(2)  INSERT INTO PRPDUSER SELECT * FROM OPENQUERY (ORACLE_TEST,' SELECT * FROM PRPDUSER') WHERE USERCODE ='5001004138';

2复制表

2.1同数据库

2.1.1复制表结构及其数据: 

2.1.1.1Oracle

 CREATE TABLE EMP2 AS SELECT * FROM EMP ;( EMP2和EMP为表名)

2.1.1.2SQLServer

 SELECT   *   INTO   t   FROM   t_score;  (t 和t_score为表名) 

2.1.2只复制表结构

2.1.2.1Oracle

CREATE TABLE emp2 AS SELECT * FROM EMP WHERE 1=0; 

或CREATE TABLE emp2 LIKE EMP;

2.1.2.2SQLServer

SELECT   *   INTO   t   FROM   t_score WHERE 1=0;   

2.2跨数据库

2.2.1复制表结构及其数据

这里主要针对的是oracle复制到sqlserver来说明

SELECT * INTO SqlTableName(sqlserver表名且表不存) FROM ORACLE_TEST(链接服务器名)..USERNAME(ORACLE 用户名).TABLENAME(ORACLE 数据表)

2.2.2只复制表结构

SELECT * INTO SqlTableName(sqlserver表名且表不存) FROM ORACLE_TEST(链接服务器名)..USERNAME(ORACLE 用户名).TABLENAME(ORACLE 数据表) WHERE 1=0;

示例:SELECT * INTO PRPDUSER FROM ORACLE_TEST..PAYTEST.PRPDUSER WHERE 1=0 

                                                                                                                                                      

2.2.3问题

1.在往SQLSERVER 里复制ORACLE表结构时,必需要保证该表在SQLSERVER里不存在。

2.另有一种情况:就是将oracle中表的结构复制到sqlserver的时候对于类型为number类   型的不能进行复制。会出现错误:为列提供的元数据不一致。                       原因是:number类型精确度可以达到小数点后38位小数,由于SQL Server中没有如此高精度的数据类型,所以在没有指定NUMBER精度和小数位的情况下SQL Server会将其转换为字符串类型以满足长度和精度的需要。(目前解决的方法是:手动建表)下载本文

显示全文
专题