Cannot create an instance of OLE DB provider “OraOLEDB.Oracle” for linked server “xxxxxxx”.

发布时间:2018-11-15  栏目:SQL  评论:0 Comments

在SQL SERVER 2008 R2下用Windows
身份认证的登录名创建了一个拜ORACLE数据库的链接服务器xxxxx,测试成功,木有问题,但是任何登录名用该链接服务器时,报如下错误:

OLE-DB的由来

趁数据源日益复杂化,现今底应用程序很可能要打不同的数据源取得数据,加以处理,再将拍卖了之数码输出到另外一个数额源中。更累的是这些数据源可能无是人情的关系数据库,而可能是Excel文件,Email,Internet/Intranet上之电子签名信息。Microsoft为了让应用程序能够为联合之法子存取各种不同之数据源,在1997年提出了UniversalDataAccess(UDA)架构。UDA因COM技术为骨干,协助程序员存取企业吃各类不同的数据源。UDA以OLE-DB(属于操作系统层次之软件)做吗技术的骨架。OLE-DB定义了联合之COM接口做呢存取各类异质数据源的正儿八经,并且封闭装于同组COM对象中。藉由OLE-DB,程序员就可以下同样的措施来存取各种数据。但仍然OLE-DB是一个不及层次的,利用效率不强。

消息 7302,级别
16,状态 1,第 1 行

OLE-DB的介绍

OLE-DB(Object Link and embed
即对象连接与坐)是微软的战略性的向不同之数据源的低级应用程序接口。OLE-DB不仅包括微软捐助的正式数据接口开放数据库连通性(ODBC)的结构化问题语言(SQL)能力,还具备面向其他非SQL数据类型的通路。
作为微软的组件对象模型(COM)的等同种植设计,OLE-DB是同等组读写多少的不二法门(在过去恐怕为称呼渠道)。OLE-DB中的对象主要包括数据源对象、阶段靶、命令对象同行组对象。使用OLE
DB的应用程序会因此到如下的乞求序列:初始化OLE——>连接至数据源——>发出命令——>处理结果——>释放数据源对象并已初始化OLE。

图片 1

OLE DB标准被定义的新定义—-OLE
DB将传统的数据库系统划分也多独逻辑组件,这些零件之间针锋相对独立并且互为通信。这种组件模型中的逐一部分受冠以不同之称:数据提供者(Data
Provider)。
小到平凡的公文文件、大及主机上的复杂数据库,或者电子邮件存储,都是数提供者的例证。有的文档把这些软件组件的开发商也称为数据提供者。

OLE DB 和ODBC的区别
由于OLEDB和ODBC
标准且是以提供合之拜访数接口,所以已经有人疑惑:OLE DB
是未是代ODBC 的初专业?答案是否定的。实际上,ODBC
标准的对象是依据SQL 的数据源(SQL-Based Data Source),而OLE DB
的靶子则是限制更广阔的别数据存储。从夫意义上说,符合ODBC
标准的数据源是符合OLE DB 标准的数目存储的子集。

Cannot create an
instance of OLE DB provider “OraOLEDB.Oracle” for linked server
“xxxxxx”.

OLE DB 源

OLE DB 源通过利用数据库表、视图或 SQL 命令,从各种兼容 OLE DB
的关系数据库中取数额。 例如,OLE DB 源可以起 Microsoft Office Access
或 SQL Server 数据库的表中提取数据。
  OLE DB 源提供四种植不同数额看模式用于取数额:

  • 表或视图。
  • 变量中指定的阐明或视图。
  • SQL 语句之运行结果。 查询好是参数化查询。
  • 存储于变量中的 SQL 语句的运转结果。

 

这时待在“服务器对象”——>“链接服务器”——>“访问接口”下,找到OraOLEDB.Oracle选项,单击右键选择属性,然后以顾接口选项下勾选“允许进程内”(Allow
inprocess)。即可缓解者问题,有时候,可能用再新建此链接服务器。

图片 2

 

鬼子给有了一个缓解此题材之步调,相当详细严谨,几乎面面俱到。可以作为参考学习之好资料:

Ran into this issue where the linked
server would work for users who were local admins on the server, but not
for anyone else. After many hours of messing around, I managed to fix
the problem using the following steps:

  1:Run “dcomcnfg.exe”. Navigate to
“Component Services -> Computers -> My Computer -> DCOM
Config”.

  2:Open the properties page of
“MSDAINITIALIZE”.

  3:Copy the “Application ID” on the
properties page.

  4:Close out of “dcomcnfg”.

  5:Run “regedit”. Navigate to
“HKEY_CLASSES_ROOT\AppID\{???}” with the ??? representing the
application ID you copied in step #3.

  6:Right click the “{???}” folder and
select “Permissions”

  7:Add the local administrators group
to the permissions, grant them full control.

  8:Close out of “regedit”.

  9:Reboot the server.

  10:Run “dcomconfig”. Navigate to
“Component Services -> Computers -> My Computer -> DCOM
Config”.

  11:Open the properties page of
“MSDAINITIALIZE”.

  12:On the “Security” tab, select
“Customize” under “Launch and Activation Permissions”, then click the
“Edit” button.

  13:Add “Authenticated Users” and
grant them all 4 launch and activation permissions.

  14:Close out of “dcomcnfg”.

  15:Find the Oracle install root
directory. “E:\Oracle” in my case.

  16:Edit the security properties of
the Oracle root directory. Add “Authenticated Users” and grant them
“Read & Execute”, “List folder contents” and “Read” permissions. Apply
the new permissions.

  17:Click the “Advanced Permissions”
button, then click “Change Permissions”. Select “Replace all child
object permissions with inheritable permissions from this object”. Apply
the new permissions.

  18:Find the “OraOLEDB.Oracle”
provider in SQL Server. Make sure the “Allow Inprocess” parameter is
checked.

  19:Reboot the server.

 

 

留下评论

网站地图xml地图