2009-05-11 6 views
8

У меня есть устаревшее приложение VB6, которое создает DSN на основе параметра в файле конфигурации. Параметр - это соединение ODBC, а соединение имеет имя (DSN-NAME), которое сопоставляет сервер (DBSERVER) с драйвером («Собственный клиент SQL Server»).Укажите драйвер по умолчанию для ODBC

Как правило, он строит DSN так:

DSN = DSN-имя, пользователь = Foo; Password = бар

Если я указать имя хоста в файле, он строит строка соединения, которая говорит

DSN = DBSERVER; User = Foo; Password = бар

Сообщение об ошибке сообщается в:

[Microsoft] [ODBC Driver Manager] Источник данных не найден и драйвер по умолчанию не указано

Это говорит мне, что есть, возможно, способ задания драйвер по умолчанию, что может означать, что я могу указать только имя сервера в файле конфигурации и не нужно создавать соединение ODBC.

(Я знаю, что они могут быть созданы автоматически, это просто просто установка и удовлетворение моего любопытства).

Как вы определяете драйвер по умолчанию? Если я могу установить драйвер по умолчанию для собственного клиента SQL Server, могу ли я сказать DSN = DBSERVER и подключиться?

Edit: дело было, чтобы попытаться сделать это без изменения строки подключения. Все исследования предполагали, что это на самом деле невозможно, но он формулировал предложенный диалог.

ответ

1

Чтобы указать драйвер по умолчанию, используйте ВОДИТЕЛЬ = в строке соединения:

DRIVER=driver name here;DATABASE=mydb;USER=foo;PASSWORD=bar 

Имя драйвера это имя, которое появляется в конфигурации инструмента ODBC Панель управления для каждого драйвера. Обратите внимание, что вам нужно будет предоставить информацию, которая обычно поступает из DSN, в этом случае имя базы данных.

+0

Спасибо, но для меня это не «драйвер по умолчанию», это «заданный пользователем» драйвер. – crb

1

Вы можете достичь того, чего хотите, добавив в строку соединения «; SERVER = dbserver».

В вашем DSN уже указан сервер, но ключевое слово SERVER в вашей строке соединения переопределит это.

http://msdn.microsoft.com/en-us/library/ms715433(VS.85).aspx

+0

Удобно, но я не могу изменить строку подключения так много, просто измените способ ее создания. В конце концов, я надеюсь, что мы перепишем это приложение, чтобы использовать строки подключения DSN-less :) – crb

0

Используйте DSN-менее строку соединения ... он может быть создан «на лету» в точности набор ваших целей .... нет пустячный с odbcad32.cpl или рег/INI файлы для контроля/настроить требуемый dsn.

см http://support.microsoft.com/kb/147875

Подробности

+0

Спасибо, но это не выясняет мой вопрос о драйвере по умолчанию. Строка подключения генерируется кодом, который я не могу изменить. – crb

+1

Извините, я неправильно понял. Чтобы уточнить, у меня есть несколько последующих вопросов. Вы используете ADO для подключения к целевой базе данных ODBC? Является ли эта база данных всегда SQL Server? Всегда подключен через собственный клиент? Ваше желание знать, как указать драйвер по умолчанию в строке подключения OLEDB, а не в ODBC DSN? Итак, вы хотите использовать ADO, указать поставщика OLEDB ODBC, предоставить дополнительную информацию в строке подключения OLEDB, чтобы указать объект SQLServer Target? – CMB

+0

В этом случае это всегда да. Но я не могу изменить сгенерированную строку соединения, иначе я бы просто поместил в нее SERVER = dbserver. – crb

3

У меня была такая же проблема, и установил ее с помощью 32-битного ODBC администратора для создания 32-битного источника данных, а не на 64-битном администратора в Администрирование, который только создает 64-разрядную DSN, которая не работает.

32-битный ODBC Manager находится на C:\Windows\SysWOW64\odbcad32.exe

Смотрите эту статью "Data source name not found and no default driver specified" в блоге Кори Гилмора.

Смежные вопросы