Я пытаюсь подключиться к экземпляру 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
из только что загруженного архива (все та же версия).