尝试通过 tsql 连接到服务器时出现错误 20002 (OS X)

Error 20002 while trying to connect to a server through tsql (OS X)

我一直在使用这个指南通过 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 & 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”returns 也是一个错误:

[ISQL]ERROR: Could not SQLConnect

编辑:在查询控制台中:

"SELECT @@SERVERNAME" returns "4a70ffff1294"

"SELECT @@SERVICENAME" returns "MSSQLSERVER"

"SELECT @@VERSION" returns "Microsoft SQL Server 2019 (RTM-CU8) (KB4577194) - 15.0.4073.23 (X64)"

tsql -S MYMSSQL

returns

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 端口和相关密码连接到它。遗憾的是,我在管理服务器方面不是很有经验。非常感谢所有帮助。

如果您想继续沿着这条路走下去,我们需要更多信息。你的 freetds.conf 里有什么?您可以使用 telnet mssql.myhost.com 1433 从您尝试安装 FreeTDS 的机器连接到您的 SQL 服务器吗?

但是,我发现避免使用 freetds.confodbc.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)

祝你好运!