Использование диспетчера ресурсов Azure для копирования баз данных SQL Azure
В настоящее время я создаю пакет развертывания среды с использованием ARM и хочу скопировать существующую базу данных SQL Azure (схему и данные) в другую базу данных SQL Azure в новой группе ресурсов. Я создал файл.bacpac из исходной базы данных SQL и загрузил его в учетную запись хранения. Затем я добавил ресурс импорта базы данных SQL в свой шаблон и указал его на URI созданного мной файла.bacpac. Когда я пытаюсь запустить Deployment, я получаю эту ошибку.
Проект, в котором база данных Microsoft Azure SQL v12 указана в качестве целевой платформы, не может быть опубликован в базе данных Microsoft Azure SQL.
{
"name": "[concat(parameters('environment'),'dbagg')]",
"type": "databases",
"location": "[resourceGroup().location]",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[variables('sqlServerName')]"
],
"tags": {
"displayName": "AggregationDatabase"
},
"properties": {
"collation": "[parameters('AggregationDatabaseCollation')]",
"edition": "[parameters('AggregationDatabaseEdition')]",
"maxSizeBytes": "1073741824",
"requestedServiceObjectiveName": "[parameters('AggregationDatabaseRequestedServiceObjectiveName')]"
},
"resources": [
{
"name": "Import",
"type": "extensions",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[concat(parameters('environment'),'dbagg')]"
],
"tags": {
"displayName": "Copy Azure SQL DB"
},
"properties": {
"storageKeyType": "Primary",
"storageKey": "key",
"storageUri": "https://test.blob.core.windows.net/databasefiles/AggregationServerDCT.bacpac",
"administratorLogin": "[parameters('sqlAdminLogin')]",
"administratorLoginPassword": "[parameters('sqlAdminLoginPassword')]",
"operationMode": "Import"
}
}
]
}
Любая помощь будет принята с благодарностью.
2 ответа
Проблема в том, что вы используете неправильное значение для storageKeyType
, Вам нужно использовать StorageAccessKey
,
Я использую такой шаблон, и он работает правильно, единственное отличие, которое я вижу, - это тип ключа.
{
"name": "[concat(variables('sqlServerName'), '/databasename/Import')]",
"type": "Microsoft.Sql/servers/databases/extensions",
"apiVersion": "[variables('sqlServerApiVersion')]",
"tags": {
"displayName": "Copy Azure SQL DB"
},
"properties": {
"storageKeyType": "StorageAccessKey",
"storageKey": "[listkeys(variables('storageId'), variables('storageVersion')).key1]",
"storageUri": "[concat(parameters('_artifactsLocation'), '/database.bacpac')]",
"administratorLogin": "[parameters('sqlServerAdminLogin')]",
"administratorLoginPassword": "[parameters('sqlServerAdminLoginPassword')]",
"operationMode": "Import"
}
}
См. Также эту документацию обо всех свойствах и возможных значениях: https://msdn.microsoft.com/en-us/library/azure/mt683388.aspx.
Вы должны дважды проверить, является ли версия целевого логического сервера также V12 (или такой же, как у источника). Также для копирования существующей базы данных Azure Sql вы можете использовать API копирования базы данных ("createMode": "Copy"): https://msdn.microsoft.com/en-us/library/mt163685.aspx
Спасибо,
Михаэла