将 Azure Sql 与 Python Azure Function 连接?

问题描述 投票:0回答:2

我需要从 Python Azure Function 连接 Azure Sql Db。 Azure SQL 与 Azure 帐户(A) 链接,Python Azure 函数与另一个帐户(B) 链接。我能够从Python Azure Function从同一帐户(B) Sql DB中获取数据,但是当我尝试从帐户(B)创建与其他Azure帐户(A)的sql db的连接时,它给了我错误。

我尝试过的:

server = "XXXX.database.windows.net"
database = "KDSKDNK"
username = "ABC" 
password = "##$%fJNSK" 
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
        cursor = cnxn.cursor()
driver = 'ODBC Driver 17 for SQL Server'
DATABASE_CONNECTION = f'mssql://{username}:{password}@{server}/{database}?driver={driver}'
engine = create_engine(DATABASE_CONNECTION,fast_executemany = True)
connection = engine.connect()

上面的代码对于同一帐户(B)中的sql数据库运行良好,但对于azure帐户(A)DB则不起作用。

错误:

('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Reason: An instance-specific error occurred while establishing a connection to SQL Server. Connection was denied since Deny Public Network Access is set to Yes (https://learn.microsoft.com/azure/azure-sql/database/connectivity-settings#deny-public-network-access). To connect to this server, use the Private Endpoint from inside your virtual network (https://learn.microsoft.com/azure/sql-database/sql-database-private-endpoint-overview#how-to-set-up-private-link-for-azure-sql-database). (47073) (SQLDriverConnect)').
python sql-server azure azure-functions azure-sql-database
2个回答
0
投票

您必须使用私有地址从与 SQL DB 运行在同一网络上的资源运行此命令,因为您使用的是被拒绝访问的公共地址。或者您需要启用公共访问,这比您可以从任何地方运行它的安全性要低。


0
投票

如果您想要一种更安全的方法来执行此操作,您可以为 SQL 数据库设置专用端点,并将 Azure Function 与 Vnet 连接。如果您关心数据安全,则需要付出更多努力,但也会更加私密。

© www.soinside.com 2019 - 2024. All rights reserved.