恐怕还有一篇关于Python的Azure SQL Server连接问题的文章。我曾经在该站点,Microsoft站点以及其他通过Google的链接上经历过多个话题,但无法正常工作。
我正在使用最新版本的Anaconda(Python 3.6.6),并安装了ODBC驱动程序版本17.2.0.1。
使用以下脚本:
import pyodbc
server = server = 'myserver.database.windows.net,1433' #also tried prepending tcp:....
database = 'db1' #not the real db name
username = 'username@myserver' #also tried username@mydomain.com
password = '123456' #obviously not my real password!
driver= '{ODBC Driver 17 for SQL Server}' #also tried v13 ODBC driver and 'SQL Server' here
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+';DATABASE='+database+';UID='+username)
cursor = cnxn.cursor()
我收到以下错误:
Error: ('IM004', "[IM004] [Microsoft][ODBC Driver Manager] Driver's SQLAllocHandle on SQL_HANDLE_ENV failed (0) (SQLDriverConnect)")
任何人都可以提供任何见解吗?
答案 0 :(得分:1)
其余所有相同
运行print(pyodbc.drivers())
driver ='{SQL Server}'`尝试此解决方案。然后我可以连接AZURE SQL数据库
答案 1 :(得分:0)
我看不到Python语法有任何问题,并且不熟悉收到的错误,但是Azure文档确实表明您需要创建一条规则以允许计算机的公共IP进行连接,然后才能用Python询问任何Azure托管数据库。
您可能已经这样做了,但是由于未在问题中提及此事,因此仍然值得澄清。
答案 2 :(得分:0)
我知道这个答案有点晚了,但是万一其他人需要帮助。
Azure官方文档显示了与实际所需参数不同的参数:
对我有用的解决方案是在Azure仪表板的数据库门户中访问连接字符串。
我怀疑吸引大多数人的是选择合适的驾驶员。如您在此字符串和pyodbc文档中所见,您必须根据数据库所运行的内容指定要使用的驱动程序:
https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Windows
该解决方案对我来说是第一次起作用,前提是我已将我的IP添加到数据库防火墙中。