簡體   English   中英

在 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.

嘗試的事情:

  1. 不同的 ODBC 驅動程序 13.1、17、FreeTDS
  2. 在用戶名中包含/排除轉義字符。
  3. 主機名與主機 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:無法打開 lib '/usr/local/lib/libmsodbcsql.13.dylib'
  • 我可以使用完全相同的憑據通過 SQL PRO STUDIO 進行連接。

如果您有任何想法該往哪個方向爬出這個連接問題,將不勝感激。 謝謝!

如果您使用的是 Windows 域身份驗證,則必須使用 FreeTDS。 奇怪的是,Microsoft ODBC 驅動程序不支持 Windows 域身份驗證,只有 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 域身份驗證; 這不是打字錯誤!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM