Cannot obtain the schema rowset “DBSCHEMA_TABLES_INFO” for OLE DB provider “SQLNCLI10” for linked server “DB1”.
在SQL SEOdysseyVEXC60 二〇〇九 昂科威2下用Windows
身份验证的记名名创制了贰个拜候ORACLE数据库的链接服务器xxxxx,测验成功,木有毛病,不过任何登陆名使用该链接服务器时,报如下错误:
消息 7302,级别
16,状态 1,第 1 行
Server Error in ‘/Engtek’ Application.
Cannot create an
instance of OLE DB provider “OraOLEDB.Oracle” for linked server
“xxxxxx”.
Cannot obtain the schema rowset “DBSCHEMA_TABLES_INFO” for OLE DB provider “SQLNCLI10” for linked server “DB1”. The provider supports the interface, but returns a failure code when it is used.
Description: An unhandled
exception occurred during the execution of the current web request.
Please review the stack trace for more information about the error and
where it originated in the code.
Exception Details:System.Data.SqlClient.SqlException: Cannot obtain the schema
rowset “DBSCHEMA_TABLES_INFO” for OLE DB provider “SQLNCLI10” for
linked server “DB1”. The provider supports the interface, but returns a
failure code when it is used.
Source Error:
Line 25: return objBusinessBase.GetDataToDataSet("usp_WipProductionSeries_GetAll").Tables[0];
|
Source File:d:\Projects\Engtek\App_Code\System\Wip\WipProductionSeries.cs Line: 25
Stack Trace:
|
Version
Information: Microsoft .NET Framework Version:4.0.30319;
ASP.NET Version:4.0.30319.1
数据库升级至Microsoft SQL Server 二〇〇九 奥迪Q72
60人之后,以前链接到SQL三千的顺序出错了。的网络到叁个化解方法:
On SQL 2000 side run the following script:
代码
create procedure sp_tables_info_rowset_64
@table_name sysname,
@table_schema sysname = null,
@table_type nvarchar(255) = null
as
declare @Result int set @Result = 0
exec @Result = sp_tables_info_rowset @table_name, @table_schema, @table_type
此刻亟需在“服务器对象”——>“链接服务器”——>“采访接口”下,找到OraOLEDB.Oracle选项,单击右键选用属性,然后在做客接口选项下勾选“允许进度内”(Allow
inprocess)。就可以缓慢解决地方难题,有的时候候,也许供给再行新建此链接服务器。
鬼子给出了三个化解这些题指标手续,十分详细严苛,差相当的少一帆风顺。能够看作参照学习的好资料:
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.