Не удается подключиться к SQL Server через pymssql
Я пытаюсь подключиться к SQL Server, работающему в системе Windows XP, из системы *nix на локальном сервере через pymssql. Однако соединение не удается, как показано ниже
db = pymssql.connect(host='192.168.1.102',user='www',password='test',database='TestDB')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pymssql.pyx", line 457, in pymssql.connect (pymssql.c:6041)
raise InterfaceError(e[0])
pymssql.InterfaceError: Connection to the database failed for an unknown reason.
вещи, которые я пробовал:
- установите SQL Server и браузер для запуска в качестве сетевого сервера.
- настройка пользователя "www". Я также тестировал этого пользователя локально в SQL Studio.
- отключить Брандмауэр Windows (временно конечно).
мне не хватает Что - то ... я просто не знаю, что это. Я попробовал все бесконечные параметры меню В Windows безрезультатно. Я заметил, что если Брандмауэр Windows включен (я устанавливаю исключение для SQL Server), python делает длительную паузу, а затем выдает ошибку. Если брандмауэр выключен, ошибка будет мгновенной.
есть ли журналы, которые я могу посмотреть в SQL Server?
3 ответов
понял! Я думаю, что источником проблемы было не предоставление бесплатного TDS необходимого внимания. Бесплатный TDS, по-видимому, является драйвером pymssql и обеспечивает подключение к другим базам данных - SQL Server является одним из них.
В freetds.файл conf находится в /usr / local / etc в моей системе (Mac Book Pro).
этот файл содержит значения по умолчанию из установки. Однако я ранее добавил определение, чтобы я мог подключиться, но забыл об этом и к сожалению, не записал.
во всяком случае, вот пример того, что я добавил к freetds.conf:
[SomeDB]
host = 192.168.1.102
port = 1219
tds version = 7.0
однако, что озадачивает, так это то, что я установил порт на 1219. Я установил его вручную в 1433 в SQL Studio. Кроме того, я использую TDS версии 0.82, поэтому я не знаю, как 7.0 вписывается.
затем я протестировал подключение с помощью "tsql" следующим образом:
tsql -S SomeDB -U www
Я ввожу пароль и получаю командную строку, которая позволяет SQL запросы.
затем я протестировал подключение с помощью pymssql следующим образом:
db = pymssql.connect(host='SomeDB',user='www',password='cylon',database='TestDB')
как вы можете видеть, мне нужно было использовать имя хоста из freetds.conf файл, а не IP напрямую. Затем я протестировал простой запрос с дополнительным кодом python, чтобы я мог читать из базы данных.
Я надеюсь, что это помогает кто-то еще в будущем.
похоже, у вас есть это решение, но для кого-либо еще из google, который приземляется здесь: проверьте, чтобы убедиться, что на вашем MS SQL Server включена авторизация в смешанном режиме. Он по умолчанию разрешает только авторизацию Windows, и это вызовет эту ошибку в pymssql
.
Это окна машины U работаешь? укажите порт 1433. кажется, это ошибка в клиентском api mssql, который пытается использовать Namedpipes вместо TCP / IP.