Python pyodbc.OperationalError:(';HYT00';,u';[HYT00][unixODBC][Microsoft][ODBC驱动程序13 for SQL Server]登录超时已过期(0)(SQLDriverConnect)';)
通过使用SQLServerManagementStudio(SSMS)Express,我可以找到数据库并顺利连接 但当我使用pyodbc连接到同一台服务器时,使用:Python pyodbc.OperationalError:(';HYT00';,u';[HYT00][unixODBC][Microsoft][ODBC驱动程序13 for SQL Server]登录超时已过期(0)(SQLDriverConnect)';),python,sql-server,linux,pyodbc,Python,Sql Server,Linux,Pyodbc,通过使用SQLServerManagementStudio(SSMS)Express,我可以找到数据库并顺利连接 但当我使用pyodbc连接到同一台服务器时,使用: import pyodbc Server = r"xxxER\xxxSQLSERV" db = "xxxDB" user = "xxx" password = "xxxx" conn = pyodbc.connect('DRIVER={SQL Server};SERVER='+serv
import pyodbc
Server = r"xxxER\xxxSQLSERV"
db = "xxxDB"
user = "xxx"
password = "xxxx"
conn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server + ';DATABASE=' + db +';UID=' + user + ';PWD=' + password)
通过在本地使用Pyhton,我可以连接,但当我在linux服务器中尝试时,会出现以下错误
pyodbc.OperationalError: ('HYT00', u'[HYT00] [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
我也尝试了SQL Server的ODBC驱动程序17,但遇到了相同的问题。请任何人向我推荐一下。Microsoft的SQL Server ODBC Linux驱动程序无法解析实例名称。您可以使用空闲模块获取相应的端口号并使用该端口号进行连接。尝试从服务器中删除实例并将其设置为
Server=“xxxER”
或者,如果您有端口号,请将其附加为
Server=“xxxER,portNo”
我遇到了这个问题,并在中解决了我的问题。
只需添加版本
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server + ';DATABASE=' + db +';UID=' + user + ';PWD=' + password)
如果不工作,则将版本17更改为13,如果不工作,则更改为11。
检查您的mssql网络配置,我的问题就在那里 为所有IP启用端口1433
现在正在使用IP和主机名。我正在使用SSH隧道,将远程服务器端口转发到本地主机1433。如果使用以下方法,此pyodbc连接会间歇性失败:
cnxn = pyodbc.connect('driver={ODBC Driver 17 for SQL Server};Server=localhost, 1433;'...
用127.0.0.1替换localhost似乎一直在起作用
cnxn=pyodbc.connect('driver={ODBC driver 17 for SQL Server};Server=127.0.0.11433;'
顺便说一句,使用Ruby和FreeTDS也做了同样的事情,
Localhost,1433
一直在工作..一定是pyodbc包中的某个东西,或者他们的方法有时会丢失一些信息,使服务器上的DBMS无法响应/timeout+1!不言而喻,TCP/IP
应该为instanc启用e有问题。sqlserverport
模块如果没有为特定的SQL Server实例启用,将因“tcp
的一个关键错误而崩溃。