Подключитесь к экземпляру SQL Server, используя pymssql в Windows - PullRequest
8 голосов
/ 06 февраля 2012

Я пытаюсь подключиться к экземпляру 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: Connection to the database failed for an unknown reason.

Я достаточно уверен, что информация о соединенииправильно, так как работает, когда я использую 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, я попытался использовать только имя хоста,а не имя хоста и экземпляр.Это привело к той же ошибке, но, похоже, потребовалось больше времени для генерации ошибки (хотя traceback по-прежнему указывает на ту же строку).Причина, по которой я указывал экземпляр, заключается в том, что я не смог подключиться с использованием SSMS, пока не указал экземпляр, поэтому я предположил, что это будет необходимо для других подключений.


У меня теперь такжепробовал pymssql.connect(host='servername', user='username', password='userpassword', database='instance') с тем же результатом (на основе комментария @ Sid).Основываясь на документации pymssql , я полагаю, что параметр database используется для указания исходной базы данных, к которой должен быть подключен пользователь, а не к экземпляру.

Просто для пояснения,«Экземпляр» - это имя, предоставляемое во время установки SQL Server, а не база данных в этой установке.Мне приходит в голову, что, возможно, pymssql не поддерживает эту нотацию, поэтому я попытаюсь переконфигурировать экземпляр SQL Server, чтобы он не требовался.


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

1 Ответ

0 голосов
/ 12 апреля 2012

Проверьте файл freetds.conf и посмотрите, не установлен ли у вас порт 1219 ., Затем проверьте еще раз:

DB = pymssql.connect(host='DB',user='youruser',password='yourpwd',database='yourDBname')

Редактировать: пример моего файла freetds.conf Python:

host = 'IP'
port = 1219
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...