
持續整合 - 資料庫
持續資料庫整合是指在專案版本控制庫中應用任何更改時,重新構建資料庫和測試資料的過程。
在資料庫整合中,通常所有與資料庫整合相關的工件 -
- 應駐留在版本控制系統中。
- 可以對其嚴格性進行測試,並檢查其是否符合策略。
- 可以使用構建指令碼生成。
持續資料庫整合中可能涉及的活動可以是以下任何一項 -
刪除資料庫 - 刪除資料庫並刪除關聯的資料,以便可以使用相同名稱建立新資料庫
建立新資料庫 - 使用資料定義語言 (DDL) 建立新資料庫。
插入初始資料 - 插入系統在交付時預計包含的任何初始資料(例如,查詢表)。
遷移資料庫和資料 - 定期遷移資料庫架構和資料(如果您正在基於現有資料庫建立系統)。
修改列屬性 - 根據需求和重構修改表列屬性和約束。
修改測試資料 - 根據需要更改多個環境的測試資料。
因此,在我們的持續資料庫示例中,我們將執行以下步驟 -
我們將建立一個 MS SQL Server 資料庫和一個相應的表。
我們將從 SQL Server Management Studio 中提取一個指令碼。此資料庫指令碼將用於在資料庫中設定我們的表。
我們將在 ASP.Net 專案中編寫程式碼以訪問此資料庫。
我們將在 TeamCity 中的專案中建立一個步驟來執行此指令碼。
我們將指令碼簽入 Git。
在前面部分建立的 AWS 資料庫中執行此操作的步驟。
步驟 1 - 建立一個 MS SQL Server 資料庫和一個相應的表。讓我們開啟 SQL Server Management Studio 並建立一個簡單的資料庫和表。右鍵單擊資料庫,然後單擊新建資料庫。

步驟 2 - 將其命名為Demodb,然後單擊確定

步驟 3 - 在新資料庫中,右鍵單擊並建立一個新表。

步驟 4 - 您可以將所需的列新增到表中。

步驟 5 - 儲存表並將其命名為Demotb。
步驟 6 - 現在右鍵單擊該表,然後選擇選單選項將表指令碼化為→刪除和建立到→檔案。

步驟 7 - 將檔案儲存到演示專案資料夾中,命名為Sample.sql。

這就是資料庫指令碼的外觀。它將首先刪除現有的表(如果存在),然後重新建立該表。
USE [Demodb] GO /****** Object: Table [dbo].[Demotb] Script Date: 3/22/2016 7:03:25 AM ****** DROP TABLE [dbo].[Demotb] GO /****** Object: Table [dbo].[Demotb] Script Date: 3/22/2016 7:03:25 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Demotb]( [TutorialName] [nvarchar](max) NULL, [TutorialID] [smallint] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
步驟 8 - 現在讓我們快速更改我們的ASP.Net 程式碼以引用新資料庫。
步驟 9 - 在Demo 專案中的Tutorial.cs檔案中,新增以下程式碼行。這些程式碼行將連線到您的資料庫,獲取伺服器版本並將版本名稱儲存在 Name 變數中。我們可以透過Response.write命令在Demo.aspx.cs檔案中顯示此 Name 變數。
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Web; namespace Simple { public class Tutorial { public String Name; public Tutorial() { string connectionString = "Data Source = WIN-50GP30FGO75; Initial Catalog = Demodb; Integrated Security = true;"; using (SqlConnection connection = new SqlConnection()) { connection.ConnectionString = connectionString; connection.Open(); Name = connection.ServerVersion; connection.Close(); } } } }
步驟 10 - 將以下程式碼新增到Demo.aspx.cs檔案以確保它顯示 SQL Server 版本。
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Simple { public partial class Demo : System.Web.UI.Page { Tutorial tp = new Tutorial(); protected void Page_Load(object sender, EventArgs e){ Response.Write(tp.Name); } } }
現在,如果我們執行程式碼,您將在瀏覽器中獲得以下輸出。

步驟 11 - 現在讓我們在 TeamCity 中新增我們的步驟,該步驟將呼叫資料庫指令碼。轉到您的專案儀表板,然後單擊編輯配置設定。

步驟 12 - 轉到構建步驟,然後單擊新增構建步驟。

選擇以下選項(請注意,CI 伺服器上應安裝 MS SQL Server 客戶端)。
執行程式型別應為命令列。
提供可選的步驟名稱。
執行應為具有引數的可執行檔案。
命令可執行檔案應為C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe
命令引數應為-S WIN-50GP30FGO75 -i Sample.sql。其中 –S 給出 SQL Server 例項的名稱。
步驟 13 - 單擊儲存。

現在需要確保構建順序。您必須確保構建順序如下。
步驟 14 - 您可以透過選擇重新排序構建步驟的選項來更改構建順序。
資料庫設定應首先進行 - 因此這將用於從頭開始重新建立您的資料庫。
接下來是應用程式的構建。
最後是您的測試設定。

步驟 15 - 現在執行git add和git commit命令,以便將Sample.sql檔案簽入 Git。這將自動觸發構建。並且此構建應該透過。

您現在擁有一個完整的構建週期,其中也包含持續資料庫整合方面。在下一節中,讓我們進一步研究持續部署。
既然您已經使用本地 SQL Server 完成了此操作,我們可以對前面部分建立的AWS MS SQL Server 重複相同的步驟。要連線到 Microsoft SQL Server,您需要透過以下約定連線。
步驟 16 - 首先檢視在 AWS 中分配給資料庫例項的名稱是什麼。登入到 AWS 後,轉到資料庫部分下的 RDS 部分。

步驟 17 - 在出現的下一個螢幕中單擊 DB 例項。

步驟 18 - 單擊您的資料庫並記下端點。在以下螢幕截圖中,它是demodb.cypphcv1d87e.ap-southeast-1.rds.amazonaws.com:1433

步驟 19 - 現在要從SQL Server Management Studio連線到資料庫,您需要將連線指定為demodb.cypphcv1d87e.ap-southeast-1.rds.amazonaws.com,1433(請注意例項名稱和埠號之間使用的逗號)。

以下螢幕截圖顯示了與資料庫的成功連線。

然後您可以重複所有相同的步驟。Sqlcmd 命令將如下所示 -

可以在 TeamCity 中的資料庫構建步驟中替換此相同的命令。執行sqlcmd 命令時,表將自動在 AWS 中的 SQL Server 資料庫中建立。
