#python #sql-server #pyodbc
#python #sql-сервер #pyodbc
Вопрос:
У меня есть скрипт Python, который хорошо работает с моего локального компьютера с Windows, используя драйвер {SQL Server Native Client 11.0}. Я пытаюсь запустить на сервере Linux, но это оказывается сложным. Я следовал руководству здесь https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Linux
Но я получаю сообщение об ошибке при попытке подключения:
pyodbc.Ошибка интерфейса: (‘IM002′, u'[IM002] [unixODBC] [Диспетчер драйверов] Имя источника данных не найдено, и драйвер по умолчанию не указан (0) (SQLDriverConnect)’)
Это моя строка подключения или, по крайней мере, последняя, которую я пробовал.
pyodbc.connect('DNS=MSSQLServerDatabase;Database=DBName;UID=user;PWD=password')
Я подтвердил, что DNS зарегистрирован в odbcinst -q -s
[dbserverdsn]
[Default]
[MSSQLServerDatabase]
И проверил расположение файлов odbc.ini odbcinst -j
unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/bwarrick/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
И я думаю, что они выглядят правильно… Имя драйвера указано правильно: cat /etc/odbc.ini
[dbserverdsn]
Driver=FreeTDS
Server=server.database.windows.net
Port=1433
Database=dbname
Driver=/usr/local/lib/libtdsodbc.so
UsageCount=1
[Default]
Driver=/usr/local/lib/libtdsodbc.so
[MSSQLServerDatabase]
Driver=ODBC Driver 17 for SQL Server
Description=Connect to my SQL Server instance
Trace=No
Server=server.database.windows.net
И есть запись для драйвера: cat /etc/odbcinst.ini
[ODBC]
Trace=No
TraceFile /tmp/odbc.log=
[FreeTDS]
Description=FreeTDS Driver
Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup=/usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.7.so.2.1
UsageCount=1
У меня заканчиваются идеи относительно того, почему я получаю эту ошибку.
Комментарии:
1. Атрибут строки подключения называется
DSN=
, а неDNS=
2. Дох!… Спасибо.