Hi all,
I just got word from MS and this is what they said about the problems some of us are experiencing:
Hi Paul,
It appears that there are problems with this particular ODBC driver. It tells us that the default catalog is "\0\0" (taken from the IDbConnection.Database property) so we pass this as a catalog restriction to enumerate tables. This works, however the rows returned provide a catalog of NULL. This is inconsistent behavior, and when we then ask our cache to select objects with the catalog restriction "\0\0" it finds none because all objects in the cache have a NULL catalog.
There is no workaround for this issue, unfortunately. The only solution is for the ODBC driver to be fixed.
Thanks,
Stephen Provine
VS Data Development Team
Is it possible to change the behavior of the ODBC driver?
Certainly, if we can track down the actual bug. The problem is, afaik, there is no way to ask an ODBC driver what the default catalog is, so I'm not sure where they're getting this info from. If they're actually querying the /current/ catalog immediately following a connect, then they're using SQLGetConnectAttr, in which I have just commited a fix which meant that the wrong result length was returned. That could conceivably have caused this problem.
I can email a couple of DLL's to test if you like?
For the benefit of the list, I'm told this fix corrects the problem with VS2K5. It's been committed to CVS and will be in the next release.
Regards, Dave.