gpt4 book ai didi

azure - 无法从 Azure Function App 连接到 SQL 托管实例(登录超时已过期)

转载 作者:行者123 更新时间:2023-12-02 08:17:02 26 4
gpt4 key购买 nike

我正在尝试从用 Python 编写的 Azure Function App 连接到 SQL 托管实例。托管实例位于网络安全组下,并具有多个控制对其访问的入站规则。该函数应用程序托管在同一个 Azure 订阅中,所有出站 IP 地址都在上述安全组中列入白名单,具有 3342 端口访问权限。该函数应用程序在本地计算机上测试时可以运行(本地计算机的 IP 也已列入白名单)。但在云中部署时,它显示“[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]登录超时已过期 (0) (SQLDriverConnect)')”。

我使用以下代码连接到数据库:

server = '<server_name>.windows.net,3342'
database = 'database'
username = 'Admin'
password = "strongpassword"
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';Uid='+username+';Pwd='+ password+';')

函数可以匿名调用,当我这样做时,会出现错误,并且我在日志中看到以下内容:

Result: Failure Exception: OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)') Stack: File "/azure-functions-host/workers/python/3.9/LINUX/X64/azure_functions_worker/dispatcher.py", line 407, in _handle__invocation_request call_result = await self._loop.run_in_executor( File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/azure-functions-host/workers/python/3.9/LINUX/X64/azure_functions_worker/dispatcher.py", line 649, in _run_sync_func return ExtensionManager.get_sync_invocation_wrapper(context, File "/azure-functions-host/workers/python/3.9/LINUX/X64/azure_functions_worker/extension.py", line 215, in _raw_invocation_wrapper result = function(**args) File "/home/site/wwwroot/dbConnTest/__init__.py", line 22, in main cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';Uid='+username+';Pwd='+ password+';Connection Timeout=30;')

我该怎么办?这与 ODBC 驱动程序版本有关吗?或者我使用了错误的 IP 地址?我已检查 Azure 门户 > 网络和 Azure CLI 中的 IP 地址:

az webapp show --resource-group <resource group> --name <function app> --query outboundIpAddresses --output tsv

我错过了什么?

最佳答案

Microsoft 支持已部分解决。消费计划中的函数应用显然具有与 Azure 门户中给出的不同的出站 IP 地址。因此建议将特定区域(函数应用)的数据中心添加到白名单中。

Relevant Documentation

我点击链接,下载了一个 JSON 文件,找到了数据中心 IP 地址前缀(在“AzureCloud.”键下)并将其添加到白名单中。

与数据库代码的连接是:

server = 'tcp:<server-name>.public.xxxxxxxxxxx.database.windows.net,3342'
database = 'database'
username = 'Admin'
password = "verystrongpass_cantbreakit_nananana"
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=' + server + ';DATABASE=' + database+';UID=' + username + ';PWD=' + password)
cursor = conn.cursor()

关于azure - 无法从 Azure Function App 连接到 SQL 托管实例(登录超时已过期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72724275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com