在 Mac 上使用 isql 和 python 连接到远程 MSSQL 2016?
Connect to remote MSSQL 2016 using isql and python on Mac?
目标: 通过 Python 连接到远程 MSSQL 2016 服务器。
主要方法: 密切关注 https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Mac-OSX 中的教程。
问题: 可以通过 tsql 连接,但 isql 不工作。错误
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[37000][unixODBC][FreeTDS][SQL Server]Login failed for user 'DOMAIN\user-p'
[37000][unixODBC][FreeTDS][SQL Server]Cannot open database "TIT_BI_OPERATIONS" requested by the login. The login failed.
尝试过的东西:
- 不同的 ODBC 驱动程序 13.1、17、FreeTDS
- Inclusion/exclusion 用户名中的转义字符。
- 主机名与主机 ip。
设置:
odbc.ini
[ODS_DSN]
Description = Connection to ODS MS_SQL 2016
Driver = FreeTDS
Servername = ODS_DSN
Port = 40000
Database = TIT_BI_OPERATIONS
odbcinst.ini
[FreeTDS]
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsodbc.so
UsageCount=1
freetds.conf
[ODS_DSN]
host = 164.10.17.77
port = 40000
tds version = 7.4
client charset = UTF-8
备注:
- 尽管如此,如果不先通过 tsql 和 isql 进行连接,运行 python 的希望不大,我仍然尝试没有成功。使用 pyodbc、pypodbc、sqlalchemy。
- 表单中的大多数错误:用户 'DOMAIN\user-p'
登录失败
- 对于 ODBC 驱动程序 13:无法打开库 '/usr/local/lib/libmsodbcsql.13.dylib'
- 我可以使用完全相同的凭据通过 SQL PRO STUDIO 进行连接。
如果您有任何想法可以从哪个方向爬出这个连接问题,我们将不胜感激。谢谢!
如果您使用 Windows 域身份验证,则必须使用 FreeTDS。奇怪的是,Windows Microsoft ODBC 驱动程序不支持域身份验证,只有 FreeTDS。
由于您可以使用tsql
命令连接,这意味着 FreeTDS 正在运行。我建议直接从 Python 明确连接。尝试这样的连接字符串:
import pyodbc
con = pyodbc.connect(
r"DRIVER={FreeTDS};"
r"SERVER=164.10.17.77;"
r"PORT=40000;"
r"DATABASE=TIT_BI_OPERATIONS;"
f"UID=DOMAIN\user-p;"
f"PWD=yourpassword;"
r"TDS_Version=7.3;"
)
cursor = con.cursor();
cursor.execute("SELECT 'this' AS that")
for row in cursor.fetchall():
print(row)
请注意,您确实需要在 UID
字段中使用两个反斜杠来连接 Windows 域身份验证;这不是错字!
目标: 通过 Python 连接到远程 MSSQL 2016 服务器。
主要方法: 密切关注 https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Mac-OSX 中的教程。
问题: 可以通过 tsql 连接,但 isql 不工作。错误
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[37000][unixODBC][FreeTDS][SQL Server]Login failed for user 'DOMAIN\user-p'
[37000][unixODBC][FreeTDS][SQL Server]Cannot open database "TIT_BI_OPERATIONS" requested by the login. The login failed.
尝试过的东西:
- 不同的 ODBC 驱动程序 13.1、17、FreeTDS
- Inclusion/exclusion 用户名中的转义字符。
- 主机名与主机 ip。
设置: odbc.ini
[ODS_DSN]
Description = Connection to ODS MS_SQL 2016
Driver = FreeTDS
Servername = ODS_DSN
Port = 40000
Database = TIT_BI_OPERATIONS
odbcinst.ini
[FreeTDS]
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsodbc.so
UsageCount=1
freetds.conf
[ODS_DSN]
host = 164.10.17.77
port = 40000
tds version = 7.4
client charset = UTF-8
备注:
- 尽管如此,如果不先通过 tsql 和 isql 进行连接,运行 python 的希望不大,我仍然尝试没有成功。使用 pyodbc、pypodbc、sqlalchemy。
- 表单中的大多数错误:用户 'DOMAIN\user-p' 登录失败
- 对于 ODBC 驱动程序 13:无法打开库 '/usr/local/lib/libmsodbcsql.13.dylib'
- 我可以使用完全相同的凭据通过 SQL PRO STUDIO 进行连接。
如果您有任何想法可以从哪个方向爬出这个连接问题,我们将不胜感激。谢谢!
如果您使用 Windows 域身份验证,则必须使用 FreeTDS。奇怪的是,Windows Microsoft ODBC 驱动程序不支持域身份验证,只有 FreeTDS。
由于您可以使用tsql
命令连接,这意味着 FreeTDS 正在运行。我建议直接从 Python 明确连接。尝试这样的连接字符串:
import pyodbc
con = pyodbc.connect(
r"DRIVER={FreeTDS};"
r"SERVER=164.10.17.77;"
r"PORT=40000;"
r"DATABASE=TIT_BI_OPERATIONS;"
f"UID=DOMAIN\user-p;"
f"PWD=yourpassword;"
r"TDS_Version=7.3;"
)
cursor = con.cursor();
cursor.execute("SELECT 'this' AS that")
for row in cursor.fetchall():
print(row)
请注意,您确实需要在 UID
字段中使用两个反斜杠来连接 Windows 域身份验证;这不是错字!