要在数据工厂上创建托管虚拟网络,必须引用资源组中的现有Vnet。
更新:1
在测试为sql数据库创建托管私有端点时,我遇到了与您相同的错误,使用您的代码在1小时18分钟后失败,设置失败。
在测试SQL server时,我发现了两个问题
groupId
应该是
sqlServer
此外,adf的托管vnet将无法与sql server通信,因为它未添加到
firewall and virtual networks
。
要解决此问题,您需要遵循以下两个步骤:
-
如果您正在引用
Microsoft.SQL/Servers
请将groupID更改为
sqlServer
如果您引用的是“Microsoft”。Synapse/Workspace“您可以将其保留为
sql
。
你可以参考这个
Microsoft Document
专用终结点子资源名称。
-
请添加用于在SQL server中为ADF创建托管虚拟网络的现有虚拟网络。(如果您正在引用synapse,请转到synapse,允许Azure服务和资源访问此工作区)
完成上述两个步骤后,部署将成功。
更新:2
场景:
使用Vnet创建SQL Server,然后引用Vnet和SQL来创建adf管理的虚拟网络和专用端点。
请使用我根据您的要求测试的以下代码:
param serverName string = uniqueString('sql', resourceGroup().id)
param sqlDBName string = 'SampleDB'
param administratorLogin string
@secure()
param administratorLoginPassword string
param virtualNetworkName string = 'azure_mysql_vnet'
param subnetName string = 'azure_mysql_subnet'
param virtualNetworkRuleName string = 'AllowSubnet'
param vnetAddressPrefix string = '10.0.0.0/16'
param subnetPrefix string = '10.0.0.0/16'
param dfName string
resource virtualNetworkName_resource 'Microsoft.Network/virtualNetworks@2020-06-01' = {
name: virtualNetworkName
location: resourceGroup().location
properties: {
addressSpace: {
addressPrefixes: [
vnetAddressPrefix
]
}
}
}
resource virtualNetworkName_subnetName 'Microsoft.Network/virtualNetworks/subnets@2020-06-01' = {
parent: virtualNetworkName_resource
name: subnetName
location: resourceGroup().location
properties: {
addressPrefix: subnetPrefix
}
}
resource serverName_resource 'Microsoft.Sql/servers@2020-02-02-preview' = {
name: serverName
location: resourceGroup().location
properties: {
administratorLogin: administratorLogin
administratorLoginPassword: administratorLoginPassword
}
}
resource serverName_sqlDBName 'Microsoft.Sql/servers/databases@2020-08-01-preview' = {
parent: serverName_resource
name: sqlDBName
location: resourceGroup().location
sku: {
name: 'Standard'
tier: 'Standard'
}
}
resource serverName_virtualNetworkRuleName 'Microsoft.Sql/servers/virtualNetworkRules@2021-02-01-preview' = {
parent: serverName_resource
name: virtualNetworkRuleName
properties: {
virtualNetworkSubnetId: virtualNetworkName_subnetName.id
ignoreMissingVnetServiceEndpoint: true
}
}
resource df 'Microsoft.DataFactory/factories@2018-06-01' = {
name: dfName
location: resourceGroup().location
identity: {
type: 'SystemAssigned'
}
}
resource integrationRuntime 'Microsoft.DataFactory/factories/integrationRuntimes@2018-06-01' = {
parent: df
name: '${dfName}-managedVnetIr'
properties: {
type: 'Managed'
typeProperties: {
computeProperties: {
location: 'AutoResolve'
dataFlowProperties: {
computeType: 'General'
coreCount: 8
timeToLive: 0
}
}
}
}
}
resource managedVnet 'Microsoft.DataFactory/factories/managedVirtualNetworks@2018-06-01' = {
parent:df
name: virtualNetworkName
properties: {
}
dependsOn: [
integrationRuntime
]
}
resource managedPrivateEndpoint 'Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints@2018-06-01' = {
parent:managedVnet
name: '${virtualNetworkName}-${serverName}-pe'
properties: {
privateLinkResourceId: serverName_resource.id
groupId: 'sqlServer'
}
dependsOn: [
managedVnet
]
}
输出:
注:
部署成功后,需要手动批准SQL server中处于挂起状态的私有端点请求,如下所示: