2016年5月13日

用ARM template建置資料庫並佈署資料庫Schema

在ARM template中目前並不允許在佈署PaaS SQL Database服務時執行Script來對資料庫進行初始化的動作;然而如果有必要,我們可以透過Azure SQL Database extension來將新的資料庫指定為備份資料庫檔案的還原對象,一樣可以達到初始化資料庫schema的效果。

要這麼做,首先必須要將初始資料庫匯出為BACPAC檔案;這可以透過SSMS 2014以上版本或是Azure Portal來做(針對Azure SQL Database)。

  • 在Portal打開要備份的資料庫,點選匯出

snip_20160513153232

  • 接著選擇要匯出的Storage位置;請注意,這裡選擇的Storage必須是"一般用途"的Storage而非”Blob”的Storage

snip_20160513153517

  • 匯出完成後,接著就可以在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"
          }
        }
      ]
    }

沒有留言:

Blog Archive

About Me