在ARM template中目前並不允許在佈署PaaS SQL Database服務時執行Script來對資料庫進行初始化的動作;然而如果有必要,我們可以透過Azure SQL Database extension來將新的資料庫指定為備份資料庫檔案的還原對象,一樣可以達到初始化資料庫schema的效果。
要這麼做,首先必須要將初始資料庫匯出為BACPAC檔案;這可以透過SSMS 2014以上版本或是Azure Portal來做(針對Azure SQL Database)。
- 在Portal打開要備份的資料庫,點選匯出
- 接著選擇要匯出的Storage位置;請注意,這裡選擇的Storage必須是"一般用途"的Storage而非”Blob”的Storage
- 匯出完成後,接著就可以在ARM template中指定SQL extension使用這個檔案來做還原;詳細的template如下:
- 其中StorageUri就是剛剛匯出BACPAC檔案的位置
{
"name": "[parameters('serverName')]",
"type": "Microsoft.Sql/servers",
"location": "[parameters('serverLocation')]",
"apiVersion": "2014-04-01-preview",
"properties": {
"administratorLogin": "[parameters('administratorLogin')]",
"administratorLoginPassword": "[parameters('administratorLoginPassword')]",
"version": "12.0"
},
"resources": [
{
"name": "[parameters('databaseName')]",
"type": "databases",
"location": "[parameters('serverLocation')]",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[concat('Microsoft.Sql/servers/', parameters('serverName'))]"
],
"properties": {
"edition": "[parameters('edition')]",
"collation": "[parameters('collation')]",
"maxSizeBytes": "[parameters('maxSizeBytes')]",
"requestedServiceObjectiveName": "[parameters('requestedServiceObjectiveName')]"
},
"resources": [
{
"name": "Import",
"type": "extensions",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[concat('Microsoft.Sql/servers/', parameters('serverName'), '/databases/', parameters('databaseName'))]"
],
"properties": {
"storageKeyType": "[variables('KeyType')]",
"storageKey": "[variables('keyValue')]",
"storageUri": "[variables('storageUri')]",
"administratorLogin": "[parameters('administratorLogin')]",
"administratorLoginPassword": "[parameters('administratorLoginPassword')]",
"operationMode": "Import"
}
}
]
}
沒有留言:
張貼留言