当“拒绝公共网络访问”设置为“是”时,外部表不起作用

问题描述

我通过在Azure sql数据库服务器上的防火墙设置中将“拒绝公共网络访问”旋钮设置为“是”来启用专用链接。除了外部数据源(外部表),其他所有东西都按预期工作。外部表格仅是指向属于同一服务器的另一个Azure sql数据库中的表的链接。在启用专用链接之前,一切正常。如果我尝试查询外部表,则会收到以下错误消息:

“从[mydbserver] .database.windows.net。[mydbname]检索数据时出错。收到的基本错误消息是:'原因:建立与sql Server的连接时发生了特定于实例的错误。由于该连接被拒绝,拒绝公共网络访问设置为是(https://docs.microsoft.com/azure/azure-sql/database/connectivity-settings#deny-public-network-access。要连接到该服务器,请从虚拟网络内部使用私有端点(https://docs.microsoft.com/azure/sql-database/sql-database-private-endpoint-overview#how-to-set-up-private-link-for-azure-sql-database)。”

我在文档中找不到关于外部数据源和外部表以及专用链接设置的任何限制的任何信息。

使用标准方式创建的外部表:“ CREATE EXTERNAL DATA SOURCE”和“ CREATE EXTERNAL TABLE”。启用专用链接后,我也尝试过重新创建数据源和表,但是错误仍然存​​在...

解决方法

您需要使用名称yourdbname.privatelink.database.windows.net

此后,您可能会收到另一个错误,提示您该名称不正确。在这种情况下,您遇到了DNS问题,需要在VM的主机文件中添加具有端点IP的条目。如果您的VM在该VNET之外,那就另当别论了。

然后,您需要在主机文件中添加端点的公共IP。我仍在尝试使用严肃的dns来解决此问题,尚未解决。

有关更多信息,请参见此;

https://techcommunity.microsoft.com/t5/azure-database-support-blog/lesson-learned-126-deny-public-network-access-allow-azure/ba-p/1244037

,

想重申对Microsoft问答中相同问题的回答:External tables not working when “Deny public network access” is set to Yes

该限制受Polybase限制,因为它目前不支持专用链接。根据PG:

Polybase目前不支持使用专用链接。请指示客户使用托管身份来保护与Azure存储的连接。

尽管这对您来说不是一个可行的解决方案,但是,如果您需要访问的数据被提取到一个存储帐户中,然后通过PG引用的方法导入,则这可能是一个可行的解决方案。触发器端点可以逆转相同的过程,并且可以在VNET +托管身份的安全范围内完成。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...