Azure Function中pyODBC连接SQL Server时出现MAX_PROVS错误
问题
本地运行正常的Python数据处理脚本(用于检索、处理并向SQL数据库插入数据),部署到Azure后连接SQL数据库失败,报错信息如下:
Result: Failure Exception: Error: ('HY000', '[HY000] [Microsoft][ODBC Driver 17 for SQL Server]MAX_PROVS: Error code 0x57 (87) (SQLDriverConnect)') Stack: File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/dispatcher.py", line 313, in _handle__invocation_request call_result = await self._loop.run_in_executor( File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/dispatcher.py", line 434, in __run_sync_func return func(**params) File "/home/site/wwwroot/HttpExample/__init__.py", line 157, in main conn = pyodbc.connect(con_str)
解决方案
- 检查ODBC驱动状态:Azure Linux环境下,先确认ODBC Driver 17是否正确安装。执行命令
apt list --installed | grep msodbcsql17验证,未安装则运行sudo apt-get install msodbcsql17完成安装。 - 修正连接字符串:错误代码0x57多因连接字符串参数格式错误导致,比如参数拼写错误、符号使用不当。确保连接字符串符合标准格式,示例:
con_str = "DRIVER={ODBC Driver 17 for SQL Server};SERVER=your-sql-server.database.windows.net;DATABASE=your-db-name;UID=your-username;PWD=your-password" - 验证网络访问权限:确认Azure Function的网络配置允许访问目标SQL数据库,比如SQL防火墙规则是否放行Function的IP地址或服务端点,是否配置了VNet集成。
- 核对环境变量配置:如果连接字符串依赖环境变量,检查Azure Function应用设置中的环境变量是否正确配置,避免值中存在多余空格或特殊字符。
内容的提问来源于stack exchange,提问作者Nooruddin Lakhani
相关产品推荐
相关产品推荐

