SQLOLEDB(.1)

16/02/2008 - 11:44 von Ralf Schrader | Report spam
Ich habe die Frage schon in microsoft.public.de.datenbank gestellt, aber
keine Antwort bekommen.

Seit ewigen Zeiten benutze ich den VB-Code

Dim objDataLink As Object
Set objDataLink = VBA.Interaction.CreateObject("DataLinks")
Dim dlgResult As ADODB.Connection
Set dlgResult = objDataLink.PromptNew()

zum Verbindungsaufbau mit der jeweiligen Datenquelle. Im Falle MS SQL bekam
ich als Provider immer SQLOLEDB.1 zurück. Im Augenblick bin ich unterwegs
und arbeite mit einem isolierten Notebook, sonst immer im Netzwerk. Da
passiert es hàufig, aber nicht immer, dass nur SQLOLEDB ohne Versionsnummer
zurück kommt. Ärgerlich, weil ich an vielen Stellen im Code den Provider
abfrage, um Besonderheiten z.B. in der SQL- Syntax zu berücksichtigen. Es
ist sicher besser, grundsàtzlich die Versionsnummer beim Vergleich zu
ignorieren. Dennoch interessiert mich, was dieses sinnlose, bis vor kurzem
nicht zu beobachtende Verhalten soll. Ist das ein Bug oder Feature?

Ralf
 

Lesen sie die antworten

#1 Elmar Boye
22/02/2008 - 19:50 | Warnen spam
Hallo Ralf,

Ralf Schrader schrieb:
Ich habe die Frage schon in microsoft.public.de.datenbank gestellt, aber
keine Antwort bekommen.

Seit ewigen Zeiten benutze ich den VB-Code

Dim objDataLink As Object
Set objDataLink = VBA.Interaction.CreateObject("DataLinks")
Dim dlgResult As ADODB.Connection
Set dlgResult = objDataLink.PromptNew()

zum Verbindungsaufbau mit der jeweiligen Datenquelle. Im Falle MS SQL bekam
ich als Provider immer SQLOLEDB.1 zurück. Im Augenblick bin ich unterwegs
und arbeite mit einem isolierten Notebook, sonst immer im Netzwerk. Da
passiert es hàufig, aber nicht immer, dass nur SQLOLEDB ohne Versionsnummer
zurück kommt.



Lohnt in dem Falle nicht (im Gegensatz zum Olap Treiber),
mehrere Versionen als ".1" gibt es nicht.
Wirdd es vermutlich nie, denn SQL Server 2005 und spàter
würden nativ vom SQLNCLI(.1) bedient.

Ärgerlich, weil ich an vielen Stellen im Code den Provider
abfrage, um Besonderheiten z.B. in der SQL- Syntax zu berücksichtigen. Es
ist sicher besser, grundsàtzlich die Versionsnummer beim Vergleich zu
ignorieren. Dennoch interessiert mich, was dieses sinnlose, bis vor kurzem
nicht zu beobachtende Verhalten soll. Ist das ein Bug oder Feature?



Vermutlich Feature... denn die Information wird wie bei jeder COM Komponente
aus der Registry gewonnen, in dem Fall dürfte das sein:
HKEY_CLASSES_ROOT\CLSID\{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}

Und dort liefert hier Name wie VersionIndependentProgID "SQLOEDB",
nur die ProgID selbst ist wàre "SQLOLEDB.1". Die beide ihrerseits
auf die obige CLSID zeigen.

Bei einer anderen MDAC/SQNCLI Konstellation mag das etwas anders
aussehen und so das obige Verhalten erklàren - Auswirkungen hat es
wie gesagt keine.

Gruß
Elmar

Ähnliche fragen