Ich habe eine veraltete VB6-App, die einen DSN basierend auf einem Parameter in einer Konfigurationsdatei erstellt. Der Parameter ist eine ODBC-Verbindung und die Verbindung hat einen Namen (DSN-NAME), der einen Server (DBSERVER) einem Treiber zuordnet ("SQL Server Native Client").
Im Allgemeinen erstellt es einen DSN wie folgt:
DSN = DSN-NAME; Benutzer = foo; Kennwort = bar
Wenn ich einen Hostnamen in der Datei angabe, baut er eine Verbindungszeichenfolge auf, die
sagtDSN = DBSERVER; Benutzer = foo; Kennwort = bar
Die gemeldete Fehlermeldung lautet:
[Microsoft] [ODBC-Treibermanager] Datenquellenname nicht gefunden und kein Standardtreiber angegeben
Dies deutet darauf hin, dass es vielleicht eine Möglichkeit gibt, einen Standardtreiber anzugeben, was bedeuten kann, dass ich nur den Servernamen in der Konfigurationsdatei angeben kann und nicht die ODBC-Verbindung erstellen muss.
(Ich bin mir bewusst, dass diese automatisch erstellt werden können; dies ist nur zur Installation und um meine Neugier zu befriedigen).
Wie spezifiziert man einen Standardtreiber? Wenn ich den Standardtreiber auf SQL Server Native Client setzen kann, kann ich dann DSN = DBSERVER sagen und verbinden?
Bearbeiten: Der Punkt bestand darin, dies zu versuchen, ohne die Verbindungszeichenfolge zu ändern. All die Forschungsergebnisse deuten darauf hin, dass dies nicht möglich ist, aber der Wortlaut des Dialogs deutet darauf hin, dass dies der Fall sein könnte.
Ich hatte das gleiche Problem und reparierte es, indem ich den 32-Bit-ODBC-Administrator verwendete, um einen 32-Bit-DSN anstelle des 64-Bit-Administrators zu erstellen, der nur 64-Bit-DSN erstellt, die nicht funktionieren / p>
Der 32-Bit-ODBC-Manager befindet sich unter C:\Windows\SysWOW64\odbcad32.exe
Siehe diesen Artikel " Datenquellenname nicht gefunden und kein Standardtreiber angegeben " auf Corey Gilmores Blog.
Um einen Standardtreiber anzugeben, verwenden Sie DRIVER = in der Verbindungszeichenfolge:
%Vor%Der Treibername ist der Name, der im ODBC-Konfigurationstool der Systemsteuerung für jeden Treiber angezeigt wird. Beachten Sie, dass Sie die Informationen angeben müssen, die normalerweise vom DSN stammen würden, in diesem Fall den Datenbanknamen.
Sie können erreichen, was Sie wollen, indem Sie "; SERVER = dbserver" an Ihre Verbindungszeichenfolge anhängen.
In Ihrem DSN ist bereits ein Server angegeben, aber das Schlüsselwort SERVER in Ihrer Verbindungszeichenfolge überschreibt das.
Verwenden Sie eine DSN-lose Verbindungszeichenfolge ... es kann "on the fly" erstellt werden, um genau Ihren Anforderungen zu entsprechen .... kein lästiges Umgehen mit odbcad32.cpl oder reg / ini-Dateien zur Steuerung / Konfiguration einer benötigten dsn.
Siehe Ссылка
für Details