Подключение к SQLServer 2005 с помощью adodbapi

Я очень новичок в Python, и у меня установлен Python 3.2 на рабочей станции Win 7-32. Попытка подключиться к серверу MSSQLServer 2005 с помощью adodbapi-2.4.2.2, последнего обновления этого пакета.

Строка кода / соединения выглядит следующим образом:

conn = adodbapi.connect ('Поставщик =SQLNCLI.1; Интегрированная безопасность =SSPI; Информация о сохраняемой безопасности = Ложь; Начальный каталог =XXX; Источник данных =123.456.789');

Из adodbapi я постоянно получаю сообщение об ошибке (это полное сообщение об ошибке из оболочки Wing IDE):

Трассировка (последний вызов был последним): Файл "D:\Program Files\Wing IDE 4.0\src\debug\tserver_sandbox.py", строка 2, если имя == 'main': Файл "D:\Python32\Lib\site-packages\adodbapi\adodbapi.py", строка 298, в файле connect connect InterfaceError # Вероятно, ошибка COM adodbapi.adodbapi.InterfaceError:

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

Я также попытался использовать строки conn с OLEDB-провайдером и встроенной системой безопасности Windows, с теми же результатами.

Все эти строки подключения работают нормально из файла UDL на моей рабочей станции и из SSMS, но завершаются с той же ошибкой в ​​adodbapi.

Как это исправить?

3 ответа

Решение

Попробуйте эту строку подключения:

Initial Catalog=XXX; Data Source=<servername>\\<SQL Instance name>; Provider=SQLOLEDB.1; Integrated Security=SSPI

Обновить

МММ нормально. Глядя на источник adodbapi, я бы сказал, что у вас ошибка COM. (да, я знаю, что это говорит след). Но именно с инициализацией соответствующих COM-объектов.

Это означает, что ваша строка подключения не имеет ничего общего с трассировкой. Я думаю, что для начала стоит убедиться, что ваша копия pythoncom обновлена.

Возможно, win32com/pythoncom еще не поддерживает Python 3K (начиная с версии 3.0), но после минуты поиска в Google я не нашел в этом ничего полезного и оставлю это вам.

Этот код должен успешно работать, когда вы исправите свою проблему (и в данный момент должен потерпеть неудачу).

import win32com.client
import pythoncom
pythoncom.CoInitialize()
win32com.client.Dispatch('ADODB.Connection')

Также любое исключение, которое выдает код, будет полезно для решения вашей проблемы.

В случае, если кто-то еще найдет эту ветку в поисках разрешения аналогичной ошибки, которую я видел в Python 2.7:

Traceback (most recent call last):
  File "get_data.py", line 10, in <module>
    connection = get_connection(r"XXX\YYY", "DB")
  File "get_data.py", line 7, in get_connection
    conn = adodbapi.connect(connstring)
  File "C:\Python27\lib\site-packages\adodbapi\adodbapi.py", line 116, in connect
    raise api.OperationalError(e, message)
adodbapi.apibase.OperationalError: (InterfaceError("Windows COM Error: Dispatch('ADODB.Connection') failed.",), 'Error opening connection to "Data Source=XXX\\YYY; Initial Catalog=DB; Provider=SQLOLEDB.1; Integrated Security=SSPI"')

В моем случае простым решением было установить Python для расширений Windows (pywin32) отсюда: http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/

У меня была такая же проблема, и я отследил ее до сбоя при загрузке win32com.pyd из-за некоторых системных библиотек DLL, которых нет в "пути загрузки DLL", таких как msvcp100.dll

Я решил проблему, скопировав много этих dll (вероятно, слишком много) в C:\WinPython-64bit-3.3.3.2\python-3.3.3.amd64\Lib\site-packages\win32

Другие вопросы по тегам