SQL Server Database:使用 Github、TeamCity和Octopus 进行源代码管理、持续集成和持续部署

目录

介绍

背景

基本用例

先决条件

1.SQL服务器数据库使用Github的源代码管理

a. 为全新的数据库创建数据库项目

i. 设置数据库项目

ii. 将项目添加到源代码管理

iii. 在Visual Studio中创建SQL Server对象

iv. 在本地提交更改

v. 将更改与远程服务器同步

vi. 发布数据库项目

b.从现有SQL Server数据库创建数据库项目并将其添加到源代码管理

兴趣点


介绍

本教程是作为维护源代码管理和启用Microsoft SQL Server数据库的持续集成的基本概念证明编写的。目标是将数据库代码放入基于云的源代码控制系统(如Github)中,并配置持续集成和交付管道,以实现平稳的数据库开发和部署周期。

背景

在传统的数据库开发过程中,有一个集中式开发服务器,多个开发人员同时进行远程访问,因为很难在本地(个人)开发机器中维护数据库。当只有一个开发人员处理项目时,此方法是可以接受的,但随着团队规模的增加,查找在两个部署周期之间所做的更改变得乏味。此外,在部署过程中出现手动错误的可能性很高。

此问题的解决方案是创建一个数据库项目,并在源代码管理系统中维护代码存储库。然后,可以将存储库作为数据库发布到各种环境中,即开发、测试、暂存和生产。由于各个开发人员可以克隆存储库和数据库以单独工作,因此也很容易跟踪更改。通过在每次合并时构建存储库,我们还可以消除手动错误并确保顺利的部署过程。

基本用例

为了了解如何实现数据库项目的持续集成,让我们以一个用例为例,该用例Microsoft SQL Server和云上的源代码管理系统中开发的数据库作为Github。作为此示例的一部分使用的IDEVisual Studio 2019。一旦我们启动并运行了源代码管理机制,我们将使用JetbrainsTeamCity 来集成持续构建方法并执行单元测试。如果构建成功,我们会将代码推送到八达通,然后从那里自动部署到不同的环境,无需任何人工干预。

牢记完整过程的长度并更好地组织内容,本教程分为三个建设性部分:

  1. 使用Github的SQL Server数据库源代码管理
  2. 使用Github和TeamCity的SQL Server数据库持续集成
  3. 使用Github、TeamCity和Octopus的SQL Server数据库持续部署

先决条件

作为本教程/课程的一部分,使用了以下工具/平台。

  • Microsoft SQL Server 2017(任何适合您需求的版本)
  • 安装了数据存储和处理工作负载的 Visual Studio 2019(2015+)
  • Github.com帐户
  • Git Bash/Git与Visual Studio集成以及对Git的基本理解
  • TeamCity服务器
  • Octopus部署

让我们现在开始。

1.SQL服务器数据库使用Github的源代码管理

a. 为全新的数据库创建数据库项目

i. 设置数据库项目

打开Visual Studio并选择创建新项目

在下一页上,我们将必须选择需要创建的项目类型。根据我们的用例,它是一个SQL Server数据库项目。我们可以向下滚动可用项目类型的列表并选择类型。如果您安装了大量工作负载,则列表非常大。因此,您可以在顶部的搜索栏中搜索“SQL Server”,然后从搜索结果中选择SQL Server数据库项目。单击下一步继续。

为项目提供名称。还可以选择解决方案的名称,并选择是否要将解决方案和项目放在同一个目录中。现在,让我们将它们保留为默认值并创建项目。

ii. 将项目添加到源代码管理

创建项目并在Visual Studio中打开解决方案后,我们要做的第一件事就是将解决方案添加到源代码管理中。我们可以通过Git Bash初始化Git或直接从Visual Studio本身将解决方案添加到源代码管理来实现这一点。右键单击解决方案,然后单击添加到源代码管理

这将自动创建本地Git存储库,你可以在团队资源管理器下看到该存储库。

这意味着Git已准备就绪,并监视此解决方案下所有项目中所做的每项更改。让我们继续做一些与数据库相关的工作,例如创建几个表。

iii. Visual Studio中创建SQL Server对象

若要使用Visual Studio创建新表,请右键单击该项目并选择添加>新项

在下一个窗口中,搜索表,从结果列表中选择,指定的名称,然后单击添加

这将自动创建具有默认主键列Id的表,并打开一个窗口,其中包含对象设计器和查询编辑器的拆分视图。对象的属性也在此窗口中可见。 

让我们在表中添加几列。我们可以使用设计器或查询编辑器对表进行更改。在一个区域中修改将自动更新另一个视图。完成更改后,按 Ctrl + S 保存更改。

iv. 在本地提交更改

到目前为止,如果您还没有注意到,新生成的.sql文件旁边有一个加号(+)图标。将鼠标悬停在图标上时,它表示该文件为待添加

这意味着正在跟踪文件,但它们不会添加到提交中。通常,使用Git Bash,我们会转到项目目录并运行'git add .'来添加要提交的所有文件,但是如果我们从Visual Studio提交,VS会自动将这些文件添加到提交中。

右键单击解决方案,然后单击提交。

这将打开团队资源管理器窗口,其中包含要提交的准备工作。您可以添加提交消息并提交更改。如果您查看更改部分,它提到文件将在提交期间添加。

添加提交消息并单击全部提交后,您的更改将在本地提交。我们可以设置远程存储库并将更改与远程服务器同步。

v. 将更改与远程服务器同步

单击通知中的同步链接,在下一个窗口中,团队资源管理器提供了将更改推送到Azure DevOps等远程服务器或远程存储库的选项。单击发布Git 存储库,它将询问必须将代码推送到的远程存储库的URL。 

转到Github.com,创建一个新存储库,将链接复制并粘贴到URL框中的空存储库,然后发布。发布更改后,它们将在Github.com推送到远程存储库。

刷新您的Github存储库,就有您的数据库项目。

现在,我们可以在数据库项目中进行更改,Git将为我们跟踪所有更改。我们可以为每个单独的开发人员创建单独的分支,并且可以将更改合并到主分支中,以便为数据库项目保留一个事实来源。

vi. 发布数据库项目

我们现在已准备好脚本,在数据库项目中维护。我们如何使用这些脚本在服务器上创建数据库?在服务器上手动执行这些脚本并不是执行此操作的最佳方法。我们可以从Visual Studio本身再次创建数据库。我们还可以设置数据库连接以进行调试。让我们看看它有多容易。

首先,要创建一个数据库,我们需要一个正在运行的SQL Server实例。它可以驻留在本地计算机或远程服务器上。目前,让我们使用SQL Server的本地实例。

Visual Studio中,单击查看>SQL Server对象资源管理器

在左侧,它将显示您当前连接到的服务器列表。我们可以执行诸如添加另一台服务器或从此处执行查询之类的操作。

若要配置必须在哪个服务器中创建数据库,我们需要为数据库项目应用连接字符串。右键单击该项目,然后转到属性

在下一个窗口中,选择调试并向下滚动面板,直到看到目标连接字符串”部分。 

到达此处后,单击编辑按钮。将显示一个新窗体,您可以在其中指定连接属性。在此窗口中,选择浏览选项卡并输入服务器名称。选择身份验证类型并提供凭据,然后单击确定。您可以通过单击测试连接按钮来确保凭据正确。如果测试连接成功,您也可以发布数据库并进行调试。

返回到解决方案资源管理器,右键单击项目,然后单击发布

此操作将导致一个新的弹出窗口,要求配置目标数据库设置。点击Edit按钮,按照上面的步骤选择目标数据库。

设置目标数据库后,指定数据库名称,然后单击发布。您可以在高级部分下配置许多选项,例如备份,删除等,但目前这超出了本教程的范围。

这将需要一些时间,您的数据库将发布到服务器。如果在SQL Server对象资源管理器中刷新服务器,应该能够看到数据库已与对象一起创建。

现在,我们可以简单地继续在数据库项目中添加和修改对象,并将其发布到我们的数据库中。如果要将其发布到不同的环境(如测试、暂存和生产),可以更改目标数据库设置并发布它。

b.从现有SQL Server数据库创建数据库项目并将其添加到源代码管理

到目前为止一切都很好,但是如果您已经在生产中拥有一个数据库,其中包含要添加到源代码管理的大量数据,该怎么办?别担心,也不难。为了演示它,让我们在同一解决方案下为现有数据库创建另一个数据库项目。由于我们已经在上述场景中创建了一个数据库,因此让我们使用相同的数据库来了解如何从现有数据库创建SQL Server数据库项目。

返回到解决方案资源管理器,右键单击解决方案,然后选择添加>新建项目”。 

按照设置全新的数据库项目下编写的相同过程创建新项目。创建项目后,右键单击该项目并选择导入>数据库

在下一个窗口中,单击选择连接

在下一个窗口中,转到浏览选项卡并指定连接条件,例如服务器名称,身份验证类型和凭据。最重要的是,选择要为其创建数据库项目的数据库。

指定源数据库详细信息后,保留默认导入设置,然后单击开始按钮。

这将需要一些时间,具体取决于数据库中的对象数量,并将完成将数据库的架构导入到项目中。

可以通过在解决方案资源管理器中展开项目来验证,以查找导入的所有对象。

甜!让我们在数据库项目中添加另一个表并发布它以验证一切是否正常工作。

继续并在数据库项目中创建另一个表。

按照发布数据库下提到的步骤发布数据库,并刷新SQL Server对象资源管理器。 

瞧!您的更改现在已反映出来。

我们可以通过转到解决方案->源代码管理->查看历史记录来查看谁更改了什么以及何时更改了内容。

这将调出整个Git日志。

到目前为止,我们的源代码控制与Visual StudioMicrosoft SQL ServerGithub完美配合。

兴趣点

我们还可以在发布数据库项目时添加部署前脚本和部署后脚本。顾名思义,它们将分别在创建数据库之前和之后执行。

预部署脚本的典型用例是为需要数据库的存储过程的任何部分设置数据库权限。同样,部署后脚本可用于在创建数据库后填充表中的种子数据。

这可以通过右键单击Project->Add->Script->Pre-Deployment Script/Post-Deployment Script来完成。

通常,最好为每个表提供多个文件用于部署前/部署后执行。

下一篇 使用Github和TeamCity的SQL Server持续集成

https://www.codeproject.com/Articles/5248936/SQL-Server-Database-Source-Control-Continuous-Inte

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值