SQL Compare是一款比较和同步SQL Server数据库结构的工具。现有超过150,000的数据库管理员、开发人员和测试人员在使用它。当测试本地数据库,暂存或激活远程服务器的数据库时,SQL Compare将分配数据库的过程自动化。
SQL Compare试用版
您遇到了一个位于IT部门某个位置的数据库,该数据库要么不在源代码管理中,要么不完全在源代码管理中。数据库可能处于开发阶段,但它甚至可能正在生产中。我所说的“不完全 ”是你无法轻易跟踪单个对象的创建和更改,例如过程或函数,因为,如果有的话,可能只有完整的构建脚本已被放入源代码控制中。
使用包含多个数据库对象的构建脚本没有什么特别的错误:例如,基于模式的开发非常常见。我不经常处理单个数据库对象,比如表或过程。例如,当我需要开发一系列相互关联的表格时,我将使用我能得到的所有帮助,包括图表工具和设计工具。我很高兴通过迁移脚本开发。我还将在共享开发服务器上进行基于模式的团队开发。我知道,您能可能需要一种坚定的勇气来阅读这篇文章。
创建本地Github仓库
对于这个演示,我使用Github。它应该是一个付费帐户,否则,当您推送到原点时,您只能使用公共回购。首先,使用Github客户端创建一个新的本地存储库。


在这个本地存储库中,我们将创建一个名为SQL的目录,在该目录中我们将在一系列子目录中生成一组对象级构建脚本,每个子目录对应一种类型的对象。这个脚本集合将构建数据库。最好将构建脚本保存在与数据库关联的所有其他混乱的单独目录中,例如迁移脚本、SSIS项目、单元测试、PowerShell脚本、配置脚本和代理脚本。

使用SQL Compare生成对象级构建脚本

如果一切顺利,您很快就会看到一个显示源和目标之间差异的屏幕。当SQL Compare执行其比较工作时,它会将源与目标进行比较,并生成仅存在于源中或仅存在于目标中或存在于两者中但存在差异的对象列表。在这种情况下,目标是一个空白目录,因此我们在左侧看到数据库中所有对象的长列表,右侧没有任何内容。

下一个窗口会以您希望的方式引导进程结束。

我们不需要单个部署脚本,在这种情况下,它将是一个完整的构建脚本。我们以后可以轻松生成这个。如果系统询问您是否要备份目标,则在这种情况下也不需要。在写完所有文件后,重新比较目录和数据库是很令人欣慰的。我记不起有问题了,但除非数据库DDL脚本太大以至于需要花费太多时间,否则最好检查一下。

通常情况下,事情进展顺利。在本例中,我们遇到一个警告,熟悉那些尝试使用AdventureWorks作为演示的人。SQL Compare生成一个同步脚本,它包含在一个事务中,以便在出现问题时可以回滚所有更改。但是,SQL Server不允许在事务中创建完整索引,因此SQL Compare将在事务完成后部署全文索引更改。但是,如果初始事务包括对引用该索引的对象的更改,则部署可能会失败。
您可以在此阶段忽略警告,因为我们正在部署到目录,但是当您使用源代码控制的内容来部署数据库时,您将需要处理该问题。首先,您需要在目标上安装全文搜索,再次运行SQL Server安装程序将其添加到目标SQL Server以进行部署。完成后,如果激活“不在部署脚本中使用事务”SQL Compare项目选项,它将正确部署。或者,您可以考虑Feodor的技术,即从初始部署中排除引用索引的任何对象,然后在第二步中部署它们。

我们可以检查一个目录,本例中是表1。

是的,一切都在那里,所以我们准备将更改提交到源代码管理。首先,我们必须在名称下保存SQL Compare项目。如果不这样做,那么每次运行比较时都需要手动设置SQL Compare。使用项目文件,您可以通过运行命令行SQL Compare重复比较,在命令行中指定项目。
完成后,我们可以回到GitHub并进行初始提交。

本教程内容尚未完结,后面将介绍教程的后半部分,包括保持数据库和源控制目录同步、优化部署脚本、自动化工作。点击下面链接查看相关文章~
相关文章:
SQL Compare教程:工作示例——比较和部署两个数据库(上)
SQL Compare教程:工作示例——比较和部署两个数据库(下)
SQL Compare快照:轻量级数据库版本控制和回滚机制(上)
SQL Compare快照:轻量级数据库版本控制和回滚机制(下)
想要购买SQL Compare正版授权,或了解更多产品信息请点击“咨询在线客服”

标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!