Подключитесь к экземпляру SQL Server с помощью pymssql.Python

Программы на Python
Ответить
Anonymous
 Подключитесь к экземпляру SQL Server с помощью pymssql.

Сообщение Anonymous »

Я пытаюсь подключиться к экземпляру SQL Server из Windows с помощью pymssql (версия 2.0.0b1-dev-20111019 с Python 2.7.1). Я попробовал самый простой подход из консоли:

Код: Выделить всё

import pymssql
c = pymssql.connect(host = r'servername\instance',
user = 'username',
password = 'userpassword')
В ответ на это я получаю очень полезную ошибку: InterfaceError: Соединение с базой данных не удалось по неизвестной причине.
Я достаточно уверен, что информация о соединении верна, поскольку она работает, когда я использую adodbapi, со следующими командами:

Код: Выделить всё

import adodbapi
c = adodbapi.connect(r'Provider=sqloledb;Data Source=servername\instance;User ID=username;password=userpassword;'
c.close
Я попробовал добавить номер порта в параметр хоста, результат тот же. Есть ли у кого-нибудь предложения о том, как решить эту проблему?

Кстати, я прочитал ответы в разделе «Невозможно подключиться к SQL Server через pymssql». В конечном итоге ОП решил свою проблему, правильно настроив FreeTDS, который, насколько я могу судить, не используется pymssql в Windows.

Основываясь на рекомендации @cha0site, я попробовал использовать только имя хоста, а не имя хоста и экземпляр. Это привело к той же ошибке, но, похоже, для ее генерации потребовалось больше времени (хотя обратная трассировка по-прежнему указывает на ту же строку). Причина, по которой я указал экземпляр, заключается в том, что я не мог подключиться с помощью SSMS, пока не указал экземпляр, поэтому я предположил, что это будет необходимо для других подключений.

Я теперь также попробовал pymssql.connect(host='servername', user='username', пароль='userpassword', data='instance') с тем же результатом (на основе комментария @Sid). Основываясь на документации pymssql, я считаю, что параметр базы данных используется для указания исходной базы данных, к которой должен подключиться пользователь, а не экземпляра.
Просто чтобы уточнить: «экземпляр» — это имя, указанное во время установки SQL Server, а не база данных в рамках этой установки. Мне приходит в голову, что, возможно, pymssql не поддерживает эту нотацию, поэтому я рассмотрю возможность перенастройки экземпляра SQL Server, чтобы он не требовался.

Теперь я переустановил SQL Server как экземпляр по умолчанию, а не как именованный экземпляр, что позволяет мне подключаться без указания имени экземпляра. adodbapi по-прежнему работает (без /instance), но pymssql по-прежнему возвращает ту же ошибку. Я также удалил и переустановил pymssql из свежезагруженного архива (все та же версия).

Подробнее здесь: https://stackoverflow.com/questions/916 ... ng-pymssql
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»