Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI10" for linked server "DB1".

时间:2022-09-01 10:05:38

 

Server Error in '/Engtek' Application.


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 23:         public DataTable GetWipProductionSeries()
Line 24:         {
Line 25: return objBusinessBase.GetDataToDataSet("usp_WipProductionSeries_GetAll").Tables[0];
Line 26:         }
Line 27:     }


Source File: d:\Projects\Engtek\App_Code\System\Wip\WipProductionSeries.cs    Line: 25

Stack Trace:

[SqlException (0x80131904): 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.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +2030802
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +5009584
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +234
   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2275
   System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
   System.Data.SqlClient.SqlDataReader.get_MetaData() +86
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +311
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +987
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141
   System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
   System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +10
   System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +144
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +319
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +94
   Insus.NET.Base.ExecuteProcedure(String procedureName, DataSet& dataSet) +186

[Exception: 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.]
   Insus.NET.Base.ExecuteProcedure(String procedureName, DataSet& dataSet) +250
   Insus.NET.BusinessBase.GetDataToDataSet(String procedureName) +90
   Insus.NET.WipProductionSeries.GetWipProductionSeries() in d:\Projects\Engtek\App_Code\System\Wip\WipProductionSeries.cs:25
   System_Report_OldEis_Wip_Stock.Data_Binding() in d:\Projects\Engtek\System\Report\OldEis\Wip\Stock.aspx.cs:29
   System_Report_OldEis_Wip_Stock.Page_Load(Object sender, EventArgs e) in d:\Projects\Engtek\System\Report\OldEis\Wip\Stock.aspx.cs:21
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +91
   System.Web.UI.Control.LoadRecursive() +74
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207

 


 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1

 

数据库升级至Microsoft SQL Server 2008 R2 64位之后,之前链接到SQL2000的程序出错了。的网上到一个解决方法:

On SQL 2000 side run the following script:

Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI10" for linked server "DB1".Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI10" for linked server "DB1".代码
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