SQL Server 資料庫版本控管
多奇數位創意有限公司
技術總監 黃保翕 ( Will 保哥 )
部落格:http://blog.miniasp.com/
為什麼資料庫要版控?
• 各位面臨到甚麼挑戰?
– 不同的資料庫版本,彼此之間都有些小差異
– 資料庫版控與應用程式版控完全脫鉤
– 資料庫部署在不同的運行環境 (本地 vs. 雲端)
– 資料庫經常需要在不同環境之間移轉
• 你怎麼辦?
2
基礎 Git 版控教學
Git Basics
Git 極速上手
• 安裝 GitHub for Windows
– https://windows.github.com/
• 開啟 Git Shell 命令提示字元
– 建立本地儲存庫
• git init
– 加入初始版本
• git add .
• git commit -m "Initial commit"
– 新增變更版本
• git add .
• git add -u .
• git commit -m "摘要說明"
– 還原至上一版本
• git reset --hard HEAD~
4
參考文章:30 天精通 Git 版本控管
– 查看版本紀錄
• git log
– 比對版本差異
• git diff
• git diff V1 V2
– 上傳版本至遠端
• git push
– 從遠端下載新版
• git pull
Git 極速上手
• 安裝 GitHub for Windows
– https://windows.github.com/
• 開啟 GitHub 視窗工具
5
參考文章:30 天精通 Git 版本控管
Git 極速上手
• 開啟 Visual Studio 2013 並建立 SQL Server 資料庫專案
6
Visual Studio Online 與 Git 版本控管實戰
認識與熟悉「產生指令碼」
Generate Scripts
8
9
10
11
12
13
14
15
透過 Powershell 匯出指令碼
• Automated Script-generation with
Powershell and SMO
16
資料層應用程式
Data Tier Application
資料層應用程式簡介
• 自我包含完整的資料庫物件
• 一致的資料庫部署、移轉、版控機制
• DAC 封裝檔 (.dacpac/.bacpac)
– 可與 Visual Studio 2013 結合
– 可讓資料庫跟應用程式一起管理 (包含版本控管)
– 直接從現有資料庫取得完整物件
– 可部署至 SQL Server 或 Azure SQL Databases
18
名詞解釋
• DAC = Data-tier Applications
• BAC = Backup
• PAC = Package
19
DAC 封裝檔類型
• .dacpac
– 保存完整的資料庫模型
– 用來佈署、升級資料庫 Schema 與版本
– DAC 是 SQL Server 資料庫部署的自主單位,可讓資
料層開發人員和資料庫管理員將 SQL Server 物件包裝
為可攜式成品,稱為 DAC 封裝,又稱為 DACPAC。
• .bacpac
– 保存完整的資料庫模型與資料
– 用來備份、還原,不能用來升級資料庫
(內容包含資料庫中的資料,以 JSON 格式儲存)
– BACPAC 是相關的成品,會封裝資料庫結構描述,以
及在資料庫中儲存的資料。 20
資料層應用程式支援以下操作
• 擷取資料層應用程式 (EXTRACT)
– 將目前資料庫匯出 DACPAC 封裝檔
• 部署資料層應用程式 (DEPLOY)
– 將 DACPAC 發佈到主機上 (也會順便將資料庫註冊為 DAC)
• 註冊為資料層應用程式 (REGISTER)
– 將該資料庫的 DAC 定義註冊到 msdb 系統資料庫中!(INFO)
• 升級資料層應用程式 (UPGRADE)
– 拿一個新的 DACPAC 檔,將目前【已註冊】的 DAC 升級到新版
• 刪除資料層應用程式 (UNREGISTER)
– 將該資料庫的 DAC 定義從 msdb 系統資料庫中刪除!
• 匯出資料層應用程式 (EXPORT)
– 備份 (包含資料) (須從資料庫節點來點選滑鼠右鍵)
• 匯入資料層應用程式 (IMPORT)
– 還原 (包含資料) (須從伺服器節點來點選滑鼠右鍵)
• 將資料庫部署到 Windows Azure SQL Database
21
DAC
SQL Server Data Tools SQL Server
Management Studio
Publish
Compare
Sync
Import
Export
Register
Unregister
SQL Azure
Management Portal
使用 DAC 封裝檔的工具
• SQL Server Data Tools (SSDT)
– Publish
– Compare
– Sync
• SQL Server Management Studio (SSMS)
– Import
– Export
– Register
– Unregister
23
DAC Lifecycle
Develop (SSDT)
• Import Database/
DACPAC
• Compare and
Synchronize Sources
• Build DACPAC from
Database Project
• Publish DACPAC
Deploy (SSMS)
• Deploy DAC Package
• New Databases
• Upgrade Databases
Manage (SSMS)
• Extract and Export DAC
Packages
• Register Database as DAC
Developer DBA DBA/Admin
總結
Summary
SQL Server 資料庫版本控制
• Git 版本控管
• 認識與熟悉「產生指令碼」
• 資料層應用程式
聯絡資訊
• The Will Will Web
記載著 Will 在網路世界的學習心得與技術分享
– http://blog.miniasp.com/
• Will 保哥的技術交流中心 (臉書粉絲專頁)
– http://www.facebook.com/will.fans
• Will 保哥的噗浪
– http://www.plurk.com/willh/invite
• Will 保哥的推特
– https://twitter.com/Will_Huang

SQL Server 資料庫版本控管

  • 1.
    SQL Server 資料庫版本控管 多奇數位創意有限公司 技術總監黃保翕 ( Will 保哥 ) 部落格:http://blog.miniasp.com/
  • 2.
    為什麼資料庫要版控? • 各位面臨到甚麼挑戰? – 不同的資料庫版本,彼此之間都有些小差異 –資料庫版控與應用程式版控完全脫鉤 – 資料庫部署在不同的運行環境 (本地 vs. 雲端) – 資料庫經常需要在不同環境之間移轉 • 你怎麼辦? 2
  • 3.
  • 4.
    Git 極速上手 • 安裝GitHub for Windows – https://windows.github.com/ • 開啟 Git Shell 命令提示字元 – 建立本地儲存庫 • git init – 加入初始版本 • git add . • git commit -m "Initial commit" – 新增變更版本 • git add . • git add -u . • git commit -m "摘要說明" – 還原至上一版本 • git reset --hard HEAD~ 4 參考文章:30 天精通 Git 版本控管 – 查看版本紀錄 • git log – 比對版本差異 • git diff • git diff V1 V2 – 上傳版本至遠端 • git push – 從遠端下載新版 • git pull
  • 5.
    Git 極速上手 • 安裝GitHub for Windows – https://windows.github.com/ • 開啟 GitHub 視窗工具 5 參考文章:30 天精通 Git 版本控管
  • 6.
    Git 極速上手 • 開啟Visual Studio 2013 並建立 SQL Server 資料庫專案 6 Visual Studio Online 與 Git 版本控管實戰
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    透過 Powershell 匯出指令碼 •Automated Script-generation with Powershell and SMO 16
  • 17.
  • 18.
    資料層應用程式簡介 • 自我包含完整的資料庫物件 • 一致的資料庫部署、移轉、版控機制 •DAC 封裝檔 (.dacpac/.bacpac) – 可與 Visual Studio 2013 結合 – 可讓資料庫跟應用程式一起管理 (包含版本控管) – 直接從現有資料庫取得完整物件 – 可部署至 SQL Server 或 Azure SQL Databases 18
  • 19.
    名詞解釋 • DAC =Data-tier Applications • BAC = Backup • PAC = Package 19
  • 20.
    DAC 封裝檔類型 • .dacpac –保存完整的資料庫模型 – 用來佈署、升級資料庫 Schema 與版本 – DAC 是 SQL Server 資料庫部署的自主單位,可讓資 料層開發人員和資料庫管理員將 SQL Server 物件包裝 為可攜式成品,稱為 DAC 封裝,又稱為 DACPAC。 • .bacpac – 保存完整的資料庫模型與資料 – 用來備份、還原,不能用來升級資料庫 (內容包含資料庫中的資料,以 JSON 格式儲存) – BACPAC 是相關的成品,會封裝資料庫結構描述,以 及在資料庫中儲存的資料。 20
  • 21.
    資料層應用程式支援以下操作 • 擷取資料層應用程式 (EXTRACT) –將目前資料庫匯出 DACPAC 封裝檔 • 部署資料層應用程式 (DEPLOY) – 將 DACPAC 發佈到主機上 (也會順便將資料庫註冊為 DAC) • 註冊為資料層應用程式 (REGISTER) – 將該資料庫的 DAC 定義註冊到 msdb 系統資料庫中!(INFO) • 升級資料層應用程式 (UPGRADE) – 拿一個新的 DACPAC 檔,將目前【已註冊】的 DAC 升級到新版 • 刪除資料層應用程式 (UNREGISTER) – 將該資料庫的 DAC 定義從 msdb 系統資料庫中刪除! • 匯出資料層應用程式 (EXPORT) – 備份 (包含資料) (須從資料庫節點來點選滑鼠右鍵) • 匯入資料層應用程式 (IMPORT) – 還原 (包含資料) (須從伺服器節點來點選滑鼠右鍵) • 將資料庫部署到 Windows Azure SQL Database 21
  • 22.
    DAC SQL Server DataTools SQL Server Management Studio Publish Compare Sync Import Export Register Unregister SQL Azure Management Portal
  • 23.
    使用 DAC 封裝檔的工具 •SQL Server Data Tools (SSDT) – Publish – Compare – Sync • SQL Server Management Studio (SSMS) – Import – Export – Register – Unregister 23
  • 24.
    DAC Lifecycle Develop (SSDT) •Import Database/ DACPAC • Compare and Synchronize Sources • Build DACPAC from Database Project • Publish DACPAC Deploy (SSMS) • Deploy DAC Package • New Databases • Upgrade Databases Manage (SSMS) • Extract and Export DAC Packages • Register Database as DAC Developer DBA DBA/Admin
  • 26.
  • 27.
    SQL Server 資料庫版本控制 •Git 版本控管 • 認識與熟悉「產生指令碼」 • 資料層應用程式
  • 28.
    聯絡資訊 • The WillWill Web 記載著 Will 在網路世界的學習心得與技術分享 – http://blog.miniasp.com/ • Will 保哥的技術交流中心 (臉書粉絲專頁) – http://www.facebook.com/will.fans • Will 保哥的噗浪 – http://www.plurk.com/willh/invite • Will 保哥的推特 – https://twitter.com/Will_Huang