我在 Azure 中有一个 VNET,其中为 MSSQL 服务器配置了私有端点连接。有一个私有 DNS 区域,其中配置了私有端点连接的 A 记录。连接到 VNET 的应用服务可以连接到 MSSQL 私有端点的私有 IP。连接到 VNET 的虚拟机解析并连接到 MSSQL 私有端点连接的私有 IP。
我可以让 SQL 服务器使用私有 DNS 区域通过 vnet 解析外部数据源的 FQDN,以便其连接以与应用服务或 VM 相同的方式工作吗?
我正在尝试在 DATABASE_A 中创建一个外部数据源和一个外部表,以便在同一 MSSQL 服务器上的两个数据库之间查询 DATABASE_B.TABLE1。
-- using DATABASE_A
CREATE EXTERNAL DATA SOURCE AppADataSrc
WITH
(
TYPE = RDBMS,
LOCATION = 'my-sqlserver.database.windows.net',
DATABASE_NAME = 'DATABASE_B',
CREDENTIAL = MyDBScopedCredential,
);
CREATE EXTERNAL TABLE [dbo].[Table1]
( [EntityId] [int] NOT NULL,
[GrpId] [char](36) NOT NULL)
WITH
( DATA_SOURCE = AppADataSrc);
我希望它通过私有连接连接到数据库,而不是使用公共 IP 地址连接到同一服务器上的其他数据库 (DATABASE_B)。在属性语句中使用私有 IP 地址LOCATION
会CREATE EXTERNAL DATA SOURCE
导致查询外部表时超时。如果我打开“允许 Azure 服务和资源访问此服务器”,则公共 IP 地址上的查询将有效。但是,我宁愿不向所有其他 Azure 服务开放 SQL 服务器。
我发现了很多关于通过虚拟网络使用其他服务连接到 MSSQL 服务器的私有端点的文档。我找不到太多关于从 Azure MSSQL 服务器连接到私有端点的文档。
答案1
私有端点是一种单向连接,从 vNet 到资源,不幸的是它们不能反向工作。对于某些服务,您还可以将服务加入 vNet,例如使用应用服务。应用服务具有私有端点,可让来自 vNet 的流量使用私有 IP 到达应用服务,但它也有 vNet 连接,允许来自应用服务的流量通过私有网络。不幸的是,SQL PaaS 服务不提供 vNet 连接。
您可以使用Azure SQL 托管实例加入 vNet,它可以完成您想要的操作,但这更加复杂且昂贵。