Может подключаться к источнику данных в DAO, но не в ADO, используя ту же строку подключения - PullRequest
0 голосов
/ 02 июля 2018

Я экспериментирую с выполнением хранимых процедур SQL Server на серверной стороне SQL Server из Access через DAO / ADO.

Я могу заставить его работать достаточно хорошо в DAO, используя сквозной запрос со строкой соединения с источником данных ODBC. Однако когда я пытаюсь использовать ту же строку подключения в объекте ADO Connection, я просто получаю сообщение:

Ошибка -2147467259: [Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию (поставщик OLE DB для драйверов ODBC)

Строка подключения, которая работала с DAO, была указателем на файл DSN: «ODBC; FILEDSN = RISCGen2.dsn».

Думая, что ADO не сможет это переварить, я попытался заменить строку соответствующим содержимым из файла DSN, а именно:

“ODBC;DRIVER={ODBC Driver 11 for SQL Server};UID=my.loginid;PWD=mypassword;SERVER=WYNRISC08;Database=RISCGen2”.

Однако, я все еще получаю ту же ошибку.

Может кто-нибудь определить, где я иду не так с этим? Заранее спасибо.

ДОПОЛНЕНИЕ

Дан Гузман ответил на поставленный мною вопрос. Теперь проблема заключается в понимании некоторых беспорядочных деталей о том, как ADO ведет себя. Я думаю, мне нужно будет задать еще один вопрос, чтобы разобраться с ним ... Опубликован новый вопрос: Выполнить хранимую процедуру SQL из VBA и получить все сообщения и наборы результатов

1 Ответ

0 голосов
/ 02 июля 2018

ODBC; DRIVER = {Драйвер ODBC 11 для SQL Сервер}; UID = my.loginid; PWD = мойпароль; SERVER = WYNRISC08; Database = RISCGen2

Опустить постороннее ODBC Спецификация:

DRIVER={ODBC Driver 11 for SQL Server};UID=my.loginid;PWD=mypassword;SERVER=WYNRISC08;Database=RISCGen2

Обратите внимание, что классический ADO изначально является OLE DB и использует поставщик Microsoft OLE DB для драйверов ODBC (MSDASQL) для использования драйверов ODBC. Вместо этого было бы лучше использовать поставщика OLE DB. Вы можете использовать устаревший поставщик OLE DB для SQL Server, который поставляется с Windows (SQLOLEDB), но было бы лучше использовать самый последний драйвер MSOLEDBSQL на момент написания . Строка подключения для этого:

Provider=MSOLEDBSQL;UID=my.loginid;PWD=mypassword;SERVER=WYNRISC08;Database=RISCGen2

Возможно, вам потребуется указать DataTypeCompatibility=80, если вы используете более новые типы данных SQL, поскольку ADO classic является зрелым API, который не был усовершенствован со времени SQL Server 2000 и не знает о типах данных, добавленных с тех пор.

...