首页 > 解决方案 > 使用专用终结点时 Azure 弹性作业不起作用

问题描述

我正在尝试设置弹性作业以在另一个数据库上运行过程。

我设置代码运行如下:EXEC jobs.sp_add_target_group 'DatabaseGroup' GO

EXEC jobs.sp_add_target_group_member
'DatabaseGroup',
@target_type =  N'SqlDatabase',
@server_name='test-db01.database.windows.net',
@database_name =N'TEST'
GO

EXEC jobs.sp_add_job @job_name='Hourly Update', @description='Runs Hourly Update',
@schedule_interval_type='Hours',@schedule_interval_count=1

EXEC jobs.sp_add_jobstep @job_name='Hourly Update',
@command=N'exec [TT].[HOURLY_UPDATE]',
@credential_name='JobRun',
@target_group_name='DatabaseGroup'

EXEC jobs.sp_start_job 'Hourly Update'

所以当我提交我的工作来运行时

我收到以下错误:无法连接到目标数据库:原因:与 SQL Server 建立连接时发生特定于实例的错误。由于拒绝公共网络访问设置为是,连接被拒绝
要连接到此服务器,请使用虚拟网络内部的专用终结点
(消息 47073,级别 14,状态 1,行 65536)

所以我的私有端点名称称为 db01.test.****.com <- 使用的机密名称

所以我重新创建 group_member 并再次重新提交作业

EXEC jobs.sp_add_target_group_member
'DatabaseGroup',
@target_type =  N'SqlDatabase',
@server_name='db01.test.****.com',
@database_name =N'TEST'
GO

下面的新错误是:服务器“db01.test.****.com”不能用作作业目标,因为它不是与此作业代理位于同一 Azure 云中的 Azure SQL 数据库服务器。服务器的标准主机名必须以“.database.windows.net”结尾。

所以我有什么想法可以解决这种情况并让我的工作提交

标签: azure

解决方案


您的专用终结点仍应使用“database.windows.net”域后缀在 Azure DNS 中注册。如果您在自己的托管 DNS 服务器上创建了自己的内部 A 记录,这将是预期的行为。

一个快速的解决方法是使用私有端点 IP 和 FQDN 在源系统上修改您的 HOSTS 文件,它应该可以工作。管理 HOSTS 文件不是您想要在任何时间段内做的事情。

如果你在 Azure 中运行这一切,你应该能够利用 Azure DNS。- - 创建一个名为“privatelink.database.windows.net”的区域

  • 在此区域中使用您的 Db01 和私有 IP 地址创建一条 A 记录

在您的 VNET 上 - 检查您使用的是 Azure DNS 还是自定义 DNS。如果自定义 DNS - 您将需要设置 DNS 服务器以进行 DNS 转发并将“privatelink.windows.net”的请求发送到 Azure DNS。只有在 Azure 中注册的 IP 才有权查询 Azure DNS。如果你使用的是 Azure DNS,它将开始工作。

如果它不能立即为您解决,那么您必须检查私有 DNS 区域是否具有连接您的 VNET 的虚拟网络链接。

Azure 私有 DNS https://docs.microsoft.com/en-us/azure/private-link/private-endpoint-dns

私有 DNS 文档: https ://docs.microsoft.com/en-us/azure/dns/private-dns-privatednszone

DNS 链接文档: https ://docs.microsoft.com/en-us/azure/dns/private-dns-virtual-network-links#resolution-virtual-network


推荐阅读