DB-Lib error message 20002, severity 9
- 2019 年 10 月 3 日
- 筆記
完整報錯內容:20002, b’DB-Lib error message 20002, severity 9:nAdaptive Server connection failed (I0.185.43.12:1433)n’
問題描述 :在python中,使用 psmssql 連接遠程資料庫,報上面的錯。通過別的機器連接遠端機沒問題,自己機器用別的工具(sqlcmd,naticat等)連接遠端機也沒問題,定位到問題出在本機使用pymssql 庫上
環境:win7sp1x64 + python3.5+pymssql2.1.3
解決方案:
官方鏈接:http://www.pymssql.org/en/stable/freetds.html
它推薦使用tsql命令先測試一下freetds的好壞,反正pymssql也是通過freetds來連接資料庫的,先排查freetds的問題。
1.下載windows系統下的tsql環境

2.我解壓到了桌面,然後cd進了bin目錄


3.測試鏈接

按照命令去連接資料庫,注意 -p 1433,-D 數據路名稱 -U 用戶名 -P 密碼
sql默認埠都是1433,除非你特意改過,pymssql的默認埠也是這個,除非你明確的知道埠改了,否則不要動這個參數。
回車之後要是能連上就直接連上了,證明freetds在本機是可以用的。我的機器在這裡提示了一下,編碼是默認的”CP936″,而pymssql的默認編碼是 UTF-8
4 萬惡的編碼轉換
知道是什麼問題,就可以改了,在每個pymssql.connect 時候指定charset=”CP936″就行了

搞定,不用pyodbc重寫,不用重裝純凈系統,不用使用pymssql的老版本然後自己編譯freetds,完美
這個問題困擾了很久,StackOverflow和其他論壇都沒能給出滿意的解決方案,可能我翻的不夠細緻,還是官網靠譜,沒事多翻翻
原創不易,如有幫助,感謝點贊。
