使用SQL Server Management Studio(SSMS)Express,我可以找到数据库并进行连接。
但是当我使用pyodbc通过以下方式连接到同一服务器时:
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)')
我也尝试使用ODBC Driver 17 for SQL Server,但是也遇到了同样的问题。任何人都可以在这方面给我建议。
答案 0 :(得分:1)
我遇到了这个问题,并在 here中解决了我的问题。 只需添加版本即可。
<referenceBlock name="breadcrumbs">
<action method="addCrumb">
<argument name="crumbName" xsi:type="string">Home</argument>
<argument name="crumbInfo" xsi:type="array">
<item name="title" xsi:type="string" translate="true">Home</item>
<item name="label" xsi:type="string" translate="true">Home</item>
<item name="link" xsi:type="string">/</item>
</argument>
</action>
</referenceBlock>
如果不起作用,则将版本17更改为13,如果不更改为11。 List versions of ODBC.
答案 1 :(得分:0)
用于Linux的Microsoft SQL Server ODBC驱动程序无法解析实例名称。您可以使用免费的sqlserverport模块来获取相应的端口号,并使用该端口号进行连接。
答案 2 :(得分:0)
尝试从服务器上删除实例并将其设置为
Server = "xxxER"
,或者如果您有端口号,则将其附加为
Server = "xxxER,portNo"
答案 3 :(得分:0)
检查您的mssql网络配置,我的问题在那里。
为所有IP启用端口1433。
现在正在使用IP和主机名。
答案 4 :(得分:0)
我使用 SSH 隧道,远程服务器端口转发到 localhost,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.1, 1433;'
顺便说一句,使用 Ruby 和 FreeTDS 也做了同样的事情,并且 Localhost,1433
一直都在工作.. 必须是 pyodbc 包中的某些东西或他们的方法有时会丢失一些信息以使服务器上的 DBMS 无法响应/超时