项目中用到sqlserver去连接oracle,通过sqlserver可以直接操作oracle.

1、安装oracle客户端软件,并配置:

Sqlserver连接oracle进行读写数据库_oracle


1)打开Net Manager,新增服务名:

Sqlserver连接oracle进行读写数据库_oracle_02

2)选择网络协议:

Sqlserver连接oracle进行读写数据库_数据库_03

3)填写主机名和端口号:

Sqlserver连接oracle进行读写数据库_数据库_04

4)填写服务名:

Sqlserver连接oracle进行读写数据库_数据库_05


5)下一步,进行测试:

Sqlserver连接oracle进行读写数据库_数据库_06

6)测试结果:

Sqlserver连接oracle进行读写数据库_oracle_07

2、设置sqlserver:
1)打开企业管理器,选择服务器对象--链接服务器

Sqlserver连接oracle进行读写数据库_oracle_08

2)右键选择"新建链接服务器"

Sqlserver连接oracle进行读写数据库_数据库_09

3)常规选项,填写内容。
链接服务器:定义链接名称;
服务器类型--其他数据源,指定程序名称为:Microsoft OLE DB Provider for Oracle;
产品名称:Oracle(可不填);
数据源:orcl(oracle新建的服务名);
访问接口字符串:UID=username;PWD=userpasswd(或MSDAORA);

Sqlserver连接oracle进行读写数据库_数据库_10

4)选择安全性:
选择使用此安全上下文进行连接,输入用户名,密码。

Sqlserver连接oracle进行读写数据库_oracle_11

5)连接中可看到表和视图:

Sqlserver连接oracle进行读写数据库_数据库_12


整个过程基本完成!

3、SQL的写法有两种:
a) 使用T-SQL语法:

      SELECT * FROM ERP.BAS_ITEM_CLASS

      注意在,SQL查询分析器中输入SQL语句时注意中文的全角半角切换方式!

b) 使用PLSQL语法:
      SELECT * FROM OPENQUERY(orcl,'SELECT * FROM ERP.BAS_ITEM_CLASS ')

      c)第二种访问方式比第一种约快50%;第二种访问方式跟直连ORACLE的速度相当;第一种访问方式可能会导致一些意外错误,如:
      该表不存在,或者当前用户没有访问该表的权限等等一些信息。

      d)如果需要访问的column中使用没有精度的数据类型,这两种查询方式都可能会报错,这是ORACLE的BUG,无法修正,只能通过查询语句的特殊处理规避这一问题:
      OLE DB 提供程序 'OraOLEDB.Oracle' 为列提供的元数据不一致。执行时更改了元数据信息。