2017-08-15 3 views
1

私は、db名のカンマ区切りリストを要求し、copyIndex関数を使用してそれらを作成するARMテンプレートを作成しています。この側面は素晴らしいですが、私の解決の次のステップはそうではありません。次に、各データベースの.bacpacファイルをインポートして、完了時に使用できるようにします。azure SQL DBのコピーでのインポート

妥当性検査のエラーは、インポートリソースdependsOnのconcat関数に問題があることを示します。私はそれをいくつかの異なる方法でテストし、どこが間違っているかを見ることはできません。

私は見ています正確なエラーメッセージがある....

Unable to process template language expressions for resource '/subscriptions/xxxxxx-xxxxx-xxxxxx-xxxxx/resourceGroups/testGroup/providers/Microsoft.Sql/servers/testsql/databases/CustomersDB/extensions/import' at line '858' and column '10'. 'The provided parameters for language function 'concat' are invalid. Either all or none of the parameters must be an array.

**追加テンプレート全体

"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
"contentVersion": "1.0.0.0", 
"parameters": { 
"location": { 
    "type": "string", 
    "defaultValue": "centralus" 
}, 
"sqlAdminUsername": { 
    "type": "string" 
}, 
"sqlAdminPassword": { 
    "type": "securestring" 
}, 
"sqlServerName": { 
    "type": "string" 
}, 
"sqlDatabaseNames": { 
    "type": "array", 
    "defaultValue": [ 
    "CustomersDB", 
    "WideWorldImporters-Standard" 
    ] 
}, 
"sqlEdition": { 
    "type": "string", 
    "defaultValue": "Standard" 
}, 
"sqlRequestedServiceObjectiveName": { 
    "type": "string", 
    "defaultValue": "S2" 
}, 
"sqlMaxSizeBytes": { 
    "type": "string", 
    "defaultValue": "268435456000" 
}, 
"publicIP": { 
    "type": "string" 
}, 
"_artifactsLocationSasToken": { 
    "type": "securestring" 
}, 
"_artifactsLocation": { 
    "type": "string" 
} 
}, 
"variables": { 
"storageKeyType": "SharedAccessKey", 
"collation": "SQL_Latin1_General_CP1_CI_AS" 
}, 
"resources": [ 
    { 
    "name": "[parameters('sqlServerName')]", 
    "type": "Microsoft.Sql/servers", 
    "apiVersion": "2014-04-01-preview", 
    "location": "[parameters('location')]", 
    "properties": { 
     "administratorLogin": "[parameters('sqlAdminUsername')]", 
     "administratorLoginPassword": "[parameters('sqlAdminPassword')]", 
     "version": "12.0" 
    }, 
    "resources": [ 
     { 
     "name": "AllowAllWindowsAzureIps", 
     "type": "firewallrules", 
     "apiVersion": "2014-04-01-preview", 
     "location": "[parameters('location')]", 
     "dependsOn": [ 
      "[concat('Microsoft.Sql/servers/', parameters('sqlServerName'))]" 
     ], 
     "properties": { 
      "endIpAddress": "0.0.0.0", 
      "startIpAddress": "0.0.0.0" 
     } 
     }, 
     { 
     "name": "Allow_Remote_SSMS", 
     "type": "firewallrules", 
     "apiVersion": "2014-04-01-preview", 
     "location": "[parameters('location')]", 
     "dependsOn": [ 
      "[concat('Microsoft.Sql/servers/', parameters('sqlServerName'))]" 
     ], 
     "properties": { 
      "startIpAddress": "[parameters('publicIP')]", 
      "endIpAddress": "[parameters('publicIP')]" 
     } 
     } 
    ] 
    }, 
    { 
    "name": "[concat(parameters('sqlServerName'), '/', parameters('sqlDatabaseNames')[copyIndex()])]", 
    "type": "Microsoft.Sql/servers/databases", 
    "location": "[parameters('location')]", 
    "apiVersion": "2014-04-01-preview", 
    "copy": { 
     "count": "[length(parameters('sqlDatabaseNames'))]", 
     "name": "sql-copy" 
    }, 
    "dependsOn": [ "[resourceId('Microsoft.Sql/servers/', parameters('sqlServerName'))]" ], 
    "properties": { 
     "collation": "[variables('collation')]", 
     "edition": "[parameters('sqlEdition')]", 
     "maxSizeBytes": "[parameters('sqlMaxSizeBytes')]", 
     "requestedServiceObjectiveName": "[parameters('sqlRequestedServiceObjectiveName')]" 
    } 
    }, 
    { 
    "name": "[concat(parameters('sqlServerName'), '/', parameters('sqlDatabaseNames')[copyIndex()],'/','import')]", 
    "type": "Microsoft.Sql/servers/databases/extensions", 
    "apiVersion": "2014-04-01-preview", 
    "dependsOn": [ "sql-copy" ], 
    "copy": { 
     "name": "sql-import", 
     "count": "[length(parameters('sqlDatabaseNames'))]" 
    }, 
    "properties": { 
     "storageKeyType": "[variables('storageKeyType')]", 
     "storageKey": "[parameters('_artifactsLocationSasToken')]", 
     "storageUri": "[concat(parameters('_artifactsLocation'), '/', 'databaseFiles', '/', parameters('sqlDatabaseNames'), '.bacpac')]", 
     "administratorLogin": "[parameters('sqlAdminUsername')]", 
     "administratorLoginPassword": "[parameters('sqlAdminPassword')]", 
     "operationMode": "Import" 
    } 
    } 
], 
} 
+0

''問題が輸入資源でconcat関数であるdependsOn.''詳細なエラーメッセージを投稿してください。 –

答えて

0

私の知る限りでは、私たちがcopyindex関数を使用することができませんでしたネストされたリソース

あなたはあなたの腕のテンプレートを実行する場合は、このエラーに直面するだろう:

Copying nested resources is not supported. Please see https://aka.ms/arm-copy/#looping-on-a-nested-resource for usage details.'.

だから私はあなたの腕テンプレートでルートリソースとしてネストされたリソースを移動示唆しています。次に、copyindexを使用することができます。

お知らせ:

詳細は、下のアームテンプレートを参照することができ、データベースの名前のパラメータのオーブを交換してください。

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
    "brandosqlAdminLogin": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "brandosqlAdminLoginPassword": { 
     "type": "string" 
    }, 
    "org": { 
     "type": "array", 
     "defaultValue": [ 
     "contoso", 
     "fabrikam", 
     "coho" 
     ] 
    }, 
    "copydatabaseCollation": { 
     "type": "string", 
     "minLength": 1, 
     "defaultValue": "SQL_Latin1_General_CP1_CI_AS" 
    }, 
    "copydatabaseEdition": { 
     "type": "string", 
     "defaultValue": "Basic", 
     "allowedValues": [ 
     "Basic", 
     "Standard", 
     "Premium" 
     ] 
    }, 
    "copydatabaseRequestedServiceObjectiveName": { 
     "type": "string", 
     "defaultValue": "Basic", 
     "allowedValues": [ 
     "Basic", 
     "S0", 
     "S1", 
     "S2", 
     "P1", 
     "P2", 
     "P3" 
     ], 
     "metadata": { 
     "description": "Describes the performance level for Edition" 
     } 
    }, 
    "copy2StorageKeyType": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "copy2StorageKey": { 
     "type": "string" 
    }, 
    "copy2StorageUri": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "copy2AdministratorLogin": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "copy2AdministratorLoginPassword": { 
     "type": "string" 
    }, 
    "serverDatabaseName": { 
     "type": "array", 
     "defaultValue": [ 
     "brandoimprottest/contoso", 
     "brandoimprottest/fabrikam", 
     "brandoimprottest/coho" 
     ] 
    }, 

    "copysqldatabase2Collation": { 
     "type": "string", 
     "minLength": 1, 
     "defaultValue": "SQL_Latin1_General_CP1_CI_AS" 
    }, 
    "copysqldatabase2Edition": { 
     "type": "string", 
     "defaultValue": "Basic", 
     "allowedValues": [ 
     "Basic", 
     "Standard", 
     "Premium" 
     ] 
    }, 
    "copysqldatabase2RequestedServiceObjectiveName": { 
     "type": "string", 
     "defaultValue": "Basic", 
     "allowedValues": [ 
     "Basic", 
     "S0", 
     "S1", 
     "S2", 
     "P1", 
     "P2", 
     "P3" 
     ], 
     "metadata": { 
     "description": "Describes the performance level for Edition" 
     } 
    } 

    }, 
    "variables": { 
    "brandosqlName": "brandoimprottest" 
    }, 
    "resources": [ 
    { 
     "name": "[variables('brandosqlName')]", 
     "type": "Microsoft.Sql/servers", 
     "location": "[resourceGroup().location]", 
     "apiVersion": "2014-04-01-preview", 
     "dependsOn": [], 
     "tags": { 
     "displayName": "brandosql" 
     }, 
     "properties": { 
     "administratorLogin": "[parameters('brandosqlAdminLogin')]", 
     "administratorLoginPassword": "[parameters('brandosqlAdminLoginPassword')]" 
     }, 
     "resources": [ 
     { 
      "name": "AllowAllWindowsAzureIps", 
      "type": "firewallrules", 
      "location": "[resourceGroup().location]", 
      "apiVersion": "2014-04-01-preview", 
      "dependsOn": [ 
      "[resourceId('Microsoft.Sql/servers', variables('brandosqlName'))]" 
      ], 
      "properties": { 
      "startIpAddress": "0.0.0.0", 
      "endIpAddress": "0.0.0.0" 
      } 
     } 
     ] 
    }, 
    { 
     "name": "[concat(variables('brandosqlName'), '/', parameters('org')[copyIndex()])]", 
     "type": "Microsoft.Sql/servers/databases", 
     "location": "[resourceGroup().location]", 
     "apiVersion": "2014-04-01-preview", 
     "copy": { 
     "count": 3, 
     "name": "sql-copy" 
     }, 
     "dependsOn": [ "[resourceId('Microsoft.Sql/servers', variables('brandosqlName'))]" ], 
     "tags": { 
     "displayName": "copysqldatabase2" 
     }, 
     "properties": { 
     "collation": "[parameters('copysqldatabase2Collation')]", 
     "edition": "[parameters('copysqldatabase2Edition')]", 
     "maxSizeBytes": "1073741824", 
     "requestedServiceObjectiveName": "[parameters('copysqldatabase2RequestedServiceObjectiveName')]" 
     } 
    }, 
    { 
     "name": "[concat(variables('brandosqlName'), '/', parameters('org')[copyIndex()],'/','aaaa')]", 
     "type": "Microsoft.Sql/servers/databases/extensions", 
     "apiVersion": "2014-04-01-preview", 
     "dependsOn": [ "sql-copy" ], 
     "tags": { 
     "displayName": "copy3" 
     }, 
     "copy": { 
     "name": "sql-copy2", 
     "count": 3 
     }, 
     "properties": { 
     "storageKeyType": "[parameters('copy2StorageKeyType')]", 
     "storageKey": "[parameters('copy2StorageKey')]", 
     "storageUri": "[parameters('copy2StorageUri')]", 
     "administratorLogin": "[parameters('copy2AdministratorLogin')]", 
     "administratorLoginPassword": "[parameters('copy2AdministratorLoginPassword')]", 
     "operationMode": "Import" 
     } 
    } 
    ], 
    "outputs": {} 
} 

結果:

enter image description here


私はまた、あなたのテンプレートをテストしている、私は輸入延長でのストレージのURLに何か問題がありました。私はプライマリストレージキーとURLでそれを変更しました。それはうまくいく。

テンプレート:

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
    "location": { 
     "type": "string", 
     "defaultValue": "eastasia" 
    }, 
    "sqlAdminUsername": { 
     "type": "string" 
    }, 
    "sqlAdminPassword": { 
     "type": "string" 
    }, 
    "sqlServerName": { 
     "type": "string" 
    }, 
    "sqlDatabaseNames": { 
     "type": "array", 
     "defaultValue": [ 
     "CustomersDB", 
     "WideWorldImporters-Standard" 
     ] 
    }, 
    "sqlEdition": { 
     "type": "string", 
     "defaultValue": "Standard" 
    }, 
    "sqlRequestedServiceObjectiveName": { 
     "type": "string", 
     "defaultValue": "S2" 
    }, 
    "sqlMaxSizeBytes": { 
     "type": "string", 
     "defaultValue": "268435456000" 
    }, 
    "publicIP": { 
     "type": "string" 
    }, 
    "copy2StorageKeyType": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "copy2StorageKey": { 
     "type": "string" 
    }, 
    "copy2StorageUri": { 
     "type": "string", 
     "minLength": 1 
    } 

    }, 
    "variables": { 
    "storageKeyType": "SharedAccessKey", 
    "collation": "SQL_Latin1_General_CP1_CI_AS" 
    }, 
    "resources": [ 
    { 
     "name": "[parameters('sqlServerName')]", 
     "type": "Microsoft.Sql/servers", 
     "apiVersion": "2014-04-01-preview", 
     "location": "[parameters('location')]", 
     "properties": { 
     "administratorLogin": "[parameters('sqlAdminUsername')]", 
     "administratorLoginPassword": "[parameters('sqlAdminPassword')]", 
     "version": "12.0" 
     }, 
     "resources": [ 
     { 
      "name": "AllowAllWindowsAzureIps", 
      "type": "firewallrules", 
      "apiVersion": "2014-04-01-preview", 
      "location": "[parameters('location')]", 
      "dependsOn": [ 
      "[concat('Microsoft.Sql/servers/', parameters('sqlServerName'))]" 
      ], 
      "properties": { 
      "endIpAddress": "0.0.0.0", 
      "startIpAddress": "0.0.0.0" 
      } 
     }, 
     { 
      "name": "Allow_Remote_SSMS", 
      "type": "firewallrules", 
      "apiVersion": "2014-04-01-preview", 
      "location": "[parameters('location')]", 
      "dependsOn": [ 
      "[concat('Microsoft.Sql/servers/', parameters('sqlServerName'))]" 
      ], 
      "properties": { 
      "startIpAddress": "[parameters('publicIP')]", 
      "endIpAddress": "[parameters('publicIP')]" 
      } 
     } 
     ] 
    }, 
    { 
     "name": "[concat(parameters('sqlServerName'), '/', parameters('sqlDatabaseNames')[copyIndex()])]", 
     "type": "Microsoft.Sql/servers/databases", 
     "location": "[parameters('location')]", 
     "apiVersion": "2014-04-01-preview", 
     "copy": { 
     "count": "[length(parameters('sqlDatabaseNames'))]", 
     "name": "sql-copy" 
     }, 
     "dependsOn": [ "[resourceId('Microsoft.Sql/servers/', parameters('sqlServerName'))]" ], 
     "properties": { 
     "collation": "[variables('collation')]", 
     "edition": "[parameters('sqlEdition')]", 
     "maxSizeBytes": "[parameters('sqlMaxSizeBytes')]", 
     "requestedServiceObjectiveName": "[parameters('sqlRequestedServiceObjectiveName')]" 
     } 
    }, 
    { 
     "name": "[concat(parameters('sqlServerName'), '/', parameters('sqlDatabaseNames')[copyIndex()],'/','import')]", 
     "type": "Microsoft.Sql/servers/databases/extensions", 
     "apiVersion": "2014-04-01-preview", 
     "dependsOn": [ "sql-copy" ], 
     "copy": { 
     "name": "sql-import", 
     "count": "[length(parameters('sqlDatabaseNames'))]" 
     }, 
     "properties": { 
     "storageKeyType": "[parameters('copy2StorageKeyType')]", 
     "storageKey": "[parameters('copy2StorageKey')]", 
     "storageUri": "[parameters('copy2StorageUri')]", 
     "administratorLogin": "[parameters('sqlAdminUsername')]", 
     "administratorLoginPassword": "[parameters('sqlAdminPassword')]", 
     "operationMode": "Import" 
     } 
    } 
    ] 
} 

結果:

enter image description here

+0

あなたの例でテストしましたが、SQLインポート操作中にエラーを投げているようです。私は元の投稿に正確なエラーを含めました。 – ronaldSwanson

+0

エラーメッセージは、連絡先機能でcopyindexを使用できなかったことを示しています。腕のテンプレート全体を投稿してください。すべての問題を見つけて解決するのは簡単です。 –

+0

テンプレートが追加されました – ronaldSwanson