如何向OLE DB数据源怎么做为Oracle传递查询参数

1、“MSDAORA”访问接口是由Microsoft OLE DB Provider for Oracle提供的这裏建议不使用此接口进行链接。通过该访问接口建立的链接服务器在进行查询oracle表(带数据类型CLOB、BLOB字段)时会报这个错误

1: --建立数据库链接服務器
17: --这两个是打开rpc,rpc out的默认为False,打开后可以支持远程更改分布式事务。(如有分布式事务操作必须要设置)

这种方式可以进行操作优点是使用简单,一目了然而缺点是性能太差,查询大数据量表很慢效率太差。

二、通过sqlserver链接服务器调用oracle 存储过程在oracle里数据库里写了一个测試存储过程需要一个传入参数和传出参数。
下面是创建和调用这个存储过程的代码:

这里要注意传出参数一定要加上Output,不然会报错

彡、通过sqlserver链接服务器实现分布式事务

   许许多多的同行就是在这一步中躺下的,因为这一步配置繁琐同时和sqlserver、oracle数据库版本,甚至是操作系統版本等都有关,驱除睡意和我一步步来进行配置吧。

(版本与你的oracle版本一致)

它是ODAC中的一部分因为oracle本身是不支持分布式事务的,通过這个驱动开放与微软的事务服务 我想绝大多数人配置好MSDTC并解析好名称后仍会报“无法启动分布式服务”就是因为这个驱动没装。


   MSDTC服务提供分布式事务服务如果要在数据库中使用分布式事务,必须

  在创建链接服务器时@server或者@datasrc设置为sql server服务器名时需要做名称解析,就是把服务器名解析为ip地址


8、远程服务器上的名称解析
  分布式事务的参与服务器是需要相互访问的,发起查询的服务器要根据机

器名或ip查找远程服務器的同样远程服务器也要查找发起服务器,远程服务器通过发起服务器的机器名查找服务器所以要保证远程服务器能够通过发起服務器的机器名访问到发起服务器。一般的两个服务器在同一网段机器名能就行很好的解析,但是也不保证都能很好的解析所以比较保險的做法是:

通过以上的一些列操作应该差不多了,这期间的操作你会抓狂,时而崩溃,时而暴走,笔者唯一的建议就是:将试验、探索坚持到底,洇为笔者已经证实SQLSERVER通过链接服务器到oracle能够使用分布式事务

1: -- 分布式事务测试

本人通过以下网址获得灵感,感谢原作者

创建链接服务器以访问 Oracle 数据库实例

在 Oracle 链接服务器中引用表时请使用以下规则:

  • 如果在 Oracle 中创建的表名和列名没有使用带引号的标识符,請使用字母全部大写的名称

  • 如果在 Oracle 中创建的表名和列名使用了带引号的标识符,请使用与在 Oracle 中创建名称时所用字母完全相同的字母大小寫形式

  • INSERT 语句应为表中的所有列提供值,即使表中的某些列为 NULL 或有默认值

若要启用 OLE DB Provider for Oracle,使与 Oracle 客户端软件一起使用必须从命令行運行注册表文件以修改客户端的注册表。不能同时运行客户端软件的多个实例下表列出了这些文件,这些文件位于 Microsoft 数据访问组件 (MDAC) 的安装目录结构中此位置通常为 C:\Program Files\Common Files\System

我要回帖

更多关于 数据源怎么做 的文章

 

随机推荐