Microsoft KB Archive/248156

From BetaArchive Wiki
Knowledge Base

FIX: Incorrect Error Trace Information for Query Interface Failure

Article ID: 248156

Article Last Modified on 3/14/2006


  • Microsoft SQL Server 7.0 Standard Edition

This article was previously published under Q248156

BUG #: 56121 (SQLBUG_70)


When you attempt to perform a Distributed Query and the provider does not support IDBCreateCommand, you will see the following error message in the trace information you can collect using the SQL Server Profiler:

IDBProperties::QueryInterface returned 0x80004002: The provider did not support an interface.

This message is not correct and should be:

Server: Msg 7301, Level 16, State 2, Line 0
Could not obtain a required interface from OLE DB provider '<provider name>'.
OLE DB error trace [OLE/DB Provider '<provider name>' IUnknown::QueryInterface returned 0x80004002: IDBCreateCommand].

where <provider name> is an identifier representing the name of the provider.


Microsoft has confirmed this to be a problem in SQL Server 7.0. This problem has been corrected in U.S. Service Pack 2 for Microsoft SQL Server 7.0. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

254561 INF: How to Obtain Service Pack 2 for Microsoft SQL Server 7.0 and Microsoft Data Engine (MSDE) 1.0

For more information, contact your primary support provider.


The IDBCreateCommand interface should be supported by any provider that supports commands that SQL Server needs in two scenarios:

  1. The query contained a pass-thru query (OpenQuery, or OpenRowset with query a inside it).
  2. SELECT/INSERT/UPDATE/DELETE statement against a 4-part name for which SQL Server generates a query against the provider for optimization.

If step 1 is the case, that is, if the user is executing a query with a pass-through query in it, then this error message indicates that they are trying to execute a pass-through query against a provider that does not support the necessary functionality.

If step 2 is the case, then the user is not using a pass-through query but still seeing the problem and it indicates a possible problem with the provider. SQL Server will not try to use the IDBCreateCommand interface unless the provider indicated that it supports commands in an appropriate SQL dialect through the DBPROP_SQLSUPPORT property. One way this bug may occur is when the provider indicates an appropriate dialect level in this property, but actually does not support IDBCreateCommand. This would be a provider bug.

Keywords: kbbug kbfix KB248156