Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 Old Forums
 CLOSED - General SQL Server
 Linked OLE DB provider error 80004002 on update

Author  Topic 

AskSQLTeam
Ask SQLTeam Question

0 Posts

Posted - 2003-02-18 : 23:48:54
Marc writes "I am working with an OLE DB provider we've written. It works just fine when called through VB ADO. Recently we've tried it as a linked server from SQL Server and have run into a problem that I'm having trouble debugging. The linked server executes select statements with no trouble. But, when I try a simple update, it fails with:

Server: Msg 7306, Level 16, State 2, Line 1
Could not open table 'customers_rms' from OLE DB provider 'CONNXOLEDB.1'. Unknown provider error.
OLE DB error trace [OLE/DB Provider 'CONNXOLEDB.1' IOpenRowset::OpenRowset returned 0x80004002: Unknown provider error.].

(note I've already done:

DBCC traceon(7300)

to get some trace info from SQL Server. At first this seemed to be producing some useful results, showing us at least one property that we were not setting/providing. But, I've corrected the property problem to the point that I am no longer seeing that error in the trace and yet still see this abort.

Using the debugger I've been able to see a flurry of property lookups and QueryInterface calls, but then SQL Server (as the consumer) moves on and requests/retrieves data. Our provider is busily fetching and returning the results when it gets a SQLFreeHandle (I believe that's the external call) that causes the query to be cancelled. That leads me to believe that the problem occurs while our provider is happily fetching and returning results, and thus there is no specific action on its part that is triggering the error during this data handling phase.

I've also tried using a OLE DB trace facility, and it also does not assist me in identifying the source of the problem.

The 80004002 is a "No Such Interface Supported" error, which leads me to believe that SQL Server needs one or more interfaces that we don't (yet) support to perform the simple update, but I can't figure out WHAT interface(s) it needs that is causing this error?

Please help me identify this so that I can fix this bug.

Thank you very much for your help,
Marc S. Gibian"

mgibian
Starting Member

1 Post

Posted - 2003-02-19 : 14:32:28
Update: I have identified that if I remove our definition of a MultipleResult Interface and remove our MultipleResult property the problem goes away. Thus, while we have implemented MultipleResult support in our provider, apparently there is something else we need to supply that we have thus far missed in the documents we have been using.

A related issue is that all select and update statements against the same SQL Server linked database to our OLE DB provider now results in the following errors (with trace turned on):

Server: Msg 7313, Level 16, State 1, Line 1
Invalid schema or catalog specified for provider 'CONNXOLEDB.1'.
OLE DB error trace [Non-interface error: OLE DB provider CONNXOLEDB.1 returned DBPROP_STRUCTUREDSTORAGE without DBPROPVAL_OO_BLOB being supported].
OLE DB error trace [Non-interface error: Invalid schema or catalog specified for the provider.].

This SEEMS straightforward enough, but nowhere are we specifying DBPROP_STRUCTUREDSTORAGE, so I don't understand why we are getting this error. I've looked at our GetProperties provider function and we never return that property. Yet, that's the error message I am getting.

What I am most interested in is understanding how I determine what it is that SQL Server is wanting from our provider that we are not giving it, in this case as well as the originally described case.

Thanks again for your help,
Marc

Go to Top of Page
   

- Advertisement -