#sql-server #macos #pyodbc #freetds
#sql-сервер #macos #pyodbc #freetds
Вопрос:
Я использовал это руководство для подключения к базе данных через pyodbc: https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Mac-OSX
Мои конфигурационные файлы выглядят так, параллельно с учебным пособием: В freetds.conf:
[MYMSSQL]
host = localhost
port = 1433
tds version = 7.3
В odbc.ini:
[MYMSSQL]
Description = Testing SQLServer
Driver = FreeTDS
Servername = MYMSSQL
В odbcinst.ini:
[FreeTDS]
Description=FreeTDS Driver for Linux amp; MSSQL
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsodbc.so
UsageCount=1
Когда я проверяю соединение с помощью «tsql -S MYMSSQL -U myuser -P mypassword», я получаю сообщение об ошибке:
Error 20002 (severity 9):
Adaptive Server connection failed
There was a problem connecting to the server
Аналогично, «isql MYMSSQL myuser mypassword» также возвращает ошибку:
[ISQL]ERROR: Could not SQLConnect
РЕДАКТИРОВАТЬ: в консоли запросов:
«SELECT @@SERVERNAME» возвращает «4a70ffff1294»
«SELECT @@SERVICENAME» возвращает «MSSQLSERVER»
«ВЫБЕРИТЕ @@VERSION» возвращает «Microsoft SQL Server 2019 (RTM-CU8) (KB4577194) — 15.0.4073.23 (X64)»
tsql -S MYMSSQL
ВОЗВРАТ
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20002 (severity 9):
Adaptive Server connection failed
There was a problem connecting to the server
Сервер запущен в образе docker. Я могу подключиться к нему через инструмент базы данных pycharm с помощью порта 1433 и соответствующего пароля. К сожалению, я не очень разбираюсь в управлении серверами. Вся помощь очень ценится.
Комментарии:
1. К какой версии SQL Server вы пытаетесь подключиться? Версия TDS 7.3 относится только к SQL Server 2008, который больше не поддерживается. Вероятно, вы хотите использовать как минимум TDS версии 7.4 для SQL Server 2012 и более поздних версий.
2. TDS 7.1, 7.2, 7.3 и 7.4 будут работать для SQL Server 2008 , но не со всеми новейшими функциями. Его версия FreeTDS может не поддерживать 7.4.
3. Команда «ВЫБРАТЬ @@VERSION» в консоли запросов возвращает «Microsoft SQL Server 2019 (RTM-CU8) (KB4577194) — 15.0.4073.23 (X64) 23 сентября 2020 16:03:08 Авторское право (C) 2019 Microsoft Corporation Developer Edition (64-разрядная версия) на Linux (Ubuntu 18.04.5 LTS) <X64>»
Ответ №1:
Если вы хотите продолжить этот путь, нам понадобится дополнительная информация. Что в вашем freetds.conf
? Можете ли вы подключиться к своему SQL Server с компьютера, на который вы пытаетесь установить FreeTDS telnet mssql.myhost.com 1433
?
Тем не менее, мне проще избежать использования freetds.conf
and odbc.ini
и просто сохранить все в Python. Если вы правильно настроили odbcinst.ini
, вы должны быть в состоянии сделать что-то вроде этого:
import pyodbc
con = pyodbc.connect(
"DRIVER={FreeTDS};"
"SERVER=mssql.yourserver.com;"
"PORT=1433;"
"DATABASE=your_db;"
"UID=your_user;"
"PWD=your_pass;"
"TDS_Version=7.3;"
)
cursor = conn.cursor()
cursor.execute("SELECT 1")
for row in cursor.fetchall():
print(row)
Удачи!
Комментарии:
1. conn = pyodbc.connect( «ДРАЙВЕР ={FreeTDS};» «СЕРВЕР = MYMSSQL;» «ПОРТ = 1433;» «БАЗА ДАННЫХ = ArtGallery;» «UID= SA;» «PWD=4916Hyperbolic *;» «TDS_Version=7.3;» ) возвращает: pyodbc. Операционная ошибка: (‘08001’, ‘[08001] [ FreeTDS][SQL Server]Не удается подключиться к источнику данных (0) (SQLDriverConnect)’)
2. Используйте полное доменное имя, а не
MYMSSQL
— например,mssql.myserver.com
. Или IP-адрес. Кроме того, что происходит, когда вы пытаетесьtelnet mssql.myhost.com 1433
выполнить команду на вашем хосте MSSQL? Подключается ли он или просто зависает при попытке?3. Я заменил «SERVER = MYMSSQL;» на «SERVER = 178.241.125.37;» , который является моим IP-адресом. Теперь он перестает отвечать. Я предполагаю, что он пытается дождаться ответа от сервера? большое спасибо за ваше время btw_