Использование диспетчера ресурсов 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

Спасибо,

Михаэла

Другие вопросы по тегам