2016-11-19 58 views
1

我想用數據庫(在Azure上)爲網站實現CI和CD。如何使用數據庫SSDT c#VSTS EF6連續傳輸Azure

工具:

  • SSDT(項目數據庫)
  • C#
  • VSTS(Visual Studio團隊服務)
  • EF6(實體框架6)
  • Azure的SQL數據庫

目標是一個完整的連續活動即使是在數據庫(最難的部分)。 對於網站來說,使用VSTS的CD非常容易。但關於數據庫,我無法找到一個明確的方法來進行。 所以一些讀數我打算

  1. 使用SSDT來管理數據庫。 VSTS構建,使用數據庫projet的dacpac自身通過模式比較生成更新數據庫。我只會寫數據運動的sql腳本。
  2. 使用EF6和「反轉POCO碼第一發電機」 link

100%持續交付,我甚至無法在數據庫架構修改停止服務。

所以我讀到數據庫更新必須與以前的部署(運行網站的DAL)兼容。因此,所有數據庫模式修改將分兩步進行,分兩次進行。只有當第一步交付時才能進行第二次交付。

所以規則應該是

  1. 重命名錶是不允許
  2. 重命名字段不允許
  3. 在SSDT添加列 1步驟
    • 添加列使用默認值
    • 將實體類別添加屬性 2步驟
    • 在數據庫上
    • 刪除缺省值
  4. 刪除列 1步驟
    • 上實體刪除列
    • 通過SSDT 2步驟添加默認值
    • 通過SSDT
  5. 刪除列

我很漂亮,我正在重新發明輪子,但我找不到完整的教程。 我在路上好嗎?微軟世界中有沒有解決方案?我準備學習。謝謝

+0

好問題,我試圖找出自己的這一個。該解決方案似乎涉及在部署期間鏡像數據庫並執行故障切換到鏡像,然後故障恢復到升級的數據庫並讓新的模式更改複製。 https://docs.microsoft.com/en-us/sql/relational-databases/replication/transactional/peer-to-peer-transactional-replication – s3raph86

+1

@ s3raph86選中此:https://dzone.com/articles/zero -downtime-deployment-with-a-database-1 – Julian50

回答

0

您可以通過Azure SQL數據庫部署步驟/任務將數據庫部署到Azure。此外,您可以通過VSTS Build或release將應用程序部署到Azure。

例如:

  1. 添加Azure Resource Manager
  2. 您VSTS創建構建定義
  3. 將Visual Studio生成步驟建立數據庫項目,它會產生dacpac文件。
  4. 添加Azure的SQL數據庫部署步驟部署數據庫通過dacpac文件天青(步驟3)
  5. 將Visual Studio生成步驟構建應用程序的項目
  6. (可選)添加Azure的應用服務部署的步驟來部署應用程序(網絡),如果需要。
  7. (可選)去引發和檢查持續集成(CI)爲每個簽入

There是一篇相關的文章(跟進其工作流程,它使用Azure的經典,你可以使用Azure的隊列中累積資源管理器)。

+0

是的,但是如何避免零停機數據庫?我的問題的第二部分。 – Julian50

+0

@ Julian50您可以部署到新的數據庫,然後更改配置文件以指向新的數據庫。 –

相關問題