
我正在嘗試在配置 bacpac 到 azure mssql VM 時自動還原它,但使用自訂腳本擴充失敗。我使用入口網站中的自動化腳本產生了 Azure MSSSQL VM ARM 模板,如果我詳細查看此內容,我會發現它已經使用自訂擴充功能在配置後的 VM 上設定 mssql。如果我需要在配置後恢復資料庫,我需要其他自訂腳本擴充資源。我想不出其他方法。但無論我嘗試什麼,第二個自訂腳本擴充“DependsOn”標籤中都會出現語法錯誤。任何幫助完成這項工作將不勝感激。請注意,我嘗試在 DependsOn 中以各種方式添加資源名稱,但不斷出現錯誤。
"message": "部署範本驗證失敗:'第 '1' 行和'7717' 列的範本資源 'dbrestore' 無效:資源識別碼 'bugtvm/SqlIaasExtension' 格式錯誤。請參閱https://aka.ms/arm-template-expressions/#reference有關使用詳細資訊..請參閱https://aka.ms/arm-template-expressions有關使用詳細資訊。
謝謝
{
"name": "[parameters('virtualMachineName')]",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2016-04-30-preview",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]",
"[concat('Microsoft.Storage/storageAccounts/', parameters('diagnosticsStorageAccountName'))]"
],
"properties": {
"osProfile": {
"computerName": "[parameters('virtualMachineName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]",
"windowsConfiguration": {
"provisionVmAgent": "true"
}
},
"hardwareProfile": {
"vmSize": "[parameters('virtualMachineSize')]"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftSQLServer",
"offer": "SQL2016SP1-WS2016",
"sku": "Web",
"version": "latest"
},
"osDisk": {
"createOption": "fromImage",
"managedDisk": {
"storageAccountType": "Standard_LRS"
}
},
"dataDisks": [
{
"createOption": "empty",
"lun": 0,
"diskSizeGB": "128",
"caching": "ReadOnly",
"managedDisk": {
"storageAccountType": "Standard_LRS"
}
}
]
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'))]"
}
]
},
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('diagnosticsStorageAccountName')), '2015-06-15').primaryEndpoints['blob']]"
}
}
}
},
{
"apiVersion": "2015-06-15",
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(parameters('virtualMachineName'), '/SqlIaasExtension')]",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachineName'))]"
],
"properties": {
"type": "SqlIaaSAgent",
"publisher": "Microsoft.SqlServer.Management",
"typeHandlerVersion": "1.2",
"autoUpgradeMinorVersion": "true",
"settings": {
"AutoTelemetrySettings": {
"Region": "[parameters('location')]"
},
"AutoPatchingSettings": {
"PatchCategory": "WindowsMandatoryUpdates",
"Enable": true,
"DayOfWeek": "[parameters('sqlAutopatchingDayOfWeek')]",
"MaintenanceWindowStartingHour": "[parameters('sqlAutopatchingStartHour')]",
"MaintenanceWindowDuration": "[parameters('sqlAutopatchingWindowDuration')]"
},
"AutoBackupSettings": {
"Enable": true,
"RetentionPeriod": "[parameters('sqlAutobackupRetentionPeriod')]",
"EnableEncryption": false
},
"KeyVaultCredentialSettings": {
"Enable": false,
"CredentialName": ""
},
"ServerConfigurationsManagementSettings": {
"SQLConnectivityUpdateSettings": {
"ConnectivityType": "[parameters('sqlConnectivityType')]",
"Port": "[parameters('sqlPortNumber')]"
},
"SQLWorkloadTypeUpdateSettings": {
"SQLWorkloadType": "[parameters('sqlStorageWorkloadType')]"
},
"SQLStorageUpdateSettings": {
"DiskCount": "[parameters('sqlStorageDisksCount')]",
"NumberOfColumns": "[parameters('sqlStorageDisksCount')]",
"StartingDeviceID": "[parameters('sqlStorageStartingDeviceId')]",
"DiskConfigurationType": "[parameters('sqlStorageDisksConfigurationType')]"
},
"AdditionalFeaturesServerConfigurations": {
"IsRServicesEnabled": "[parameters('rServicesEnabled')]"
}
}
},
"protectedSettings": {
"StorageUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('diagnosticsStorageAccountName')), '2015-06-15').primaryEndpoints['blob']]",
"StorageAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('diagnosticsStorageAccountName')), '2015-06-15').key1]",
"SQLAuthUpdateUserName": "[parameters('sqlAuthenticationLogin')]",
"SQLAuthUpdatePassword": "[parameters('sqlAuthenticationPassword')]"
}
}
},
{
"apiVersion": "2015-06-15",
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "dbrestore",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachineName') )]",
"[concat(parameters('virtualMachineName'),'/', 'SqlIaasExtension')]"
],
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.9",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"https://somestoragehere.blob.core.windows.net/dbbackups/restorescript.ps1"
]
},
"protectedSettings": {
"commandToExecute": "powershell -ExecutionPolicy Unrestricted -File restorescript.ps1",
"storageAccountName": "some storage here",
"storageAccountKey": "some key here"
}
}
},
答案1
根本原因是"[concat(parameters('virtualMachineName'),'/', 'SqlIaasExtension')]"
不存在。你應該像下面這樣修改它:
"[concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachineName'),'/extensions/SqlIaasExtension')]"
你可以檢查這個關聯。
來自OP的更新:
一旦我將名稱欄位從“restoredb”更改為“段錯誤”,就會發生段錯誤"[concat(parameters('virtualMachineName'),'/restoredb')]"
。它與多個自訂腳本擴充功能無關