你認識 SQL Server 的資料層應用程式(Data-tier Applications - DAC)嗎?

DAC 首次出現於 SQL Server 2008 R2 ,但直至今日經過了這麼久時間還是很少聽到其他人討論這個功能,雖然曾經用過但還是認識不深,最近新專案在部署至 Azure 時選擇使用 DAC 相關技術,所以花了時間暸解內容,順手筆記

資料層應用程式(Data-tier Applications - DAC) 是什麼?

資料層應用程式(Data-tier Applications - DAC) 包含所有 SQL Server 物件 (e.g. table、view、stored procedure) 定義,可以用來進行資料庫部署

依內容分成兩種檔案:

  1. DACPAC

    • 僅資料庫結構描述
    • 適合用來部署
  2. BACPAC

    • 資料庫結構描述 + 資料內容
    • 適合用來還原資料庫

DAC 所需權限

  • Deploy :dbmanager 或擁有 CREATE DATABASE 權限
  • Delete:dbmanager 或擁有 DROP DATABASE 權限

DACPAC 相關操作

  1. Extract

    將資料庫結構封裝為 DACPAC

    • 目標資料庫右鍵 –> Tasks –> Extract Data-tier Application…

      1extract

    • Introduction

      2intro

    • Set Properties

      • Appliaction name(名稱需相同才能進行升級)
      • Version(版本必需不同)
      • Description
      • Save tp DAC package file

        3info

    • Validation and Summary

      4validation

    • Build Package

      5inprogress

      6success

  2. Deploy

    使用 DACPAC 建立資料庫, 預設將資料庫註冊為 DAC

    • 資料庫資料夾右鍵 –> Deploy Data-tier Application…

      7deploy

    • Intrduction

      8info

    • Select Package

      9filelocation

    • Update Configuration

      10dbname

    • Summary

      11summary

    • Deploy DAC

      12inprogress

      13sucess

  3. Register

    將資料庫註冊為 DAC(在 SQL Server 中建立版控)

    • 目標資料庫右鍵 –> Tasks –> Register as Data-tier Application…

      14register

    • Introduction

      15intro

    • Set Properties

      • DAC instance name
      • Application name
      • Version
      • Description

      16properties

    • Validation and Summary

      17validation

    • Register DAC

      18inpreogress

      19success

  4. Upgrade

    使用 DACPAC 來更新資料庫

    • 目標資料庫 –> Tasks –> Upgrade Data-tier Application…

      20upgrade

    • Introduction

      21intro

    • Select Package

      22select

    • Detect Package

      23detect

      • 顯示 no cahnges ? 這應該是 bug

        24nochanges

    • Options

      • 失敗是否 rollback

        25option

    • Review Upgrade Plan

      26review

      • 可能造成資料遺失

        27dataloss

    • Summary

      28summary

    • Upgrade DAC

      29inprogress

      30success

  5. Delete

    僅刪除在 SQL Server 的版本資訊

    • 目標資料庫右鍵 –> Tasks –> Delete Data-tier Application…

      31delete

    • Introduction

      32intro

    • Summary

      33summary

    • Delete DAC

      34success

BACPAC 相關操作

  1. Export

    將資料庫 schema 及資料封裝

    • 目標資料庫右鍵 –> Tasks –> Export Data-tier Application…

      35export

    • Introduction

      36intro

    • Export Settings

      • Settings

        選擇儲存位置及檔名

        37settings

      • Advanced

        選擇匯出內容

        38advanced

    • Summary

      39summary

    • Results

      40inprogress

      41success

  2. Import

    使用 BACPAC 將資料庫 schema 及資料匯入

    • 資料庫資料夾右鍵 –> Import Data-tier Application…

      42import

    • Introduction

      43INTRO

    • Import Settings

      選擇 BACPAC 檔案位置

      44filelocation

    • Database Settings

      設定 db 名稱及相關檔案儲放路徑

      45dbsetting

    • Summary

      46summary

    • Results

      47inprogress

      48success

參考資訊

  1. Data-tier Applications
  2. SQL Server 資料庫版本控管