如何使用Visual Studio Git源代码控制提供程序控制SQL Server数据库的版本

时间:2012-10-17 14:50:56

标签: sql-server visual-studio-2010 visual-studio git ssms

我已Git Source Control Provider设置并运行良好。

对于Visual Studio项目,即。

问题是每个这样的项目都紧密绑定到SQL Server数据库。

我在自己的.git存储库中知道how to version control a database但这既不方便也不真正健壮,因为理想情况下我希望同时在两个目录树上运行相同的ADD,COM​​MIT,TAG和BRANCH命令,以同步的方式。

有没有办法以我描述的方式使用Visual Studio的Git源代码控制提供程序来使用Git SQL Server数据库?

3 个答案:

答案 0 :(得分:7)

如果您愿意,可以安装SQL Server Data Tools,但您不必安装:您可以从Visual Studio Use the Database Publishing Wizard to script your table data 进入解决方案的文件夹,然后是Git就像你使用该文件夹中的其他项目文件一样。

答案 1 :(得分:4)

您可以使用SQL Server Data Tools将数据库模式存储为Visual Studio项目,然后使用Git对该项目进行版本控制。

答案 2 :(得分:2)

在数据库版本控制空间中工作了5年(作为DBmaestro的产品管理总监)并且作为DBA工作了二十多年,我可以告诉你一个简单的事实,你不能对待数据库处理Java,C#或其他文件时的对象,并将更改保存在简单的DDL脚本中。

原因很多,我只列举一些:

  • 文件存储在开发人员的PC本地和他/她的更改 使得不影响其他开发者。同样,开发人员不是 受到她的同事所做的改变的影响。在数据库中这是 (通常)并非如此,开发人员共享同一个数据库 环境,因此提交给数据库的任何更改都会影响 他人。
  • 使用签入/提交更改/发布代码更改 等(取决于您使用的源控制工具)。在那时候, 插入开发人员本地目录中的代码 源控制存储库。想要获得最新信息的开发人员 代码需要从源代码管理工具请求它。在数据库中 变更已经存在并影响其他数据,即使它不是 签入存储库。
  • 在文件签入期间,源代码管理工具会执行冲突 检查是否修改了同一文件并由另一个文件签入 您修改本地副本期间的开发人员。再来一次 在数据库中没有检查这个。如果你改变了一个程序 您的本地PC,同时我修改了相同的程序 代码形成我的本地PC然后我们覆盖彼此的变化。
  • 代码的构建过程是通过获取标签/ latest来完成的 将代码版本添加到空目录然后执行构建 - 编译。输出是二进制文件,我们在其中复制&更换 现有。我们不关心以前的事情。在数据库中我们不能 我们需要维护数据来重新创建数据库!还有 部署执行在构建中生成的SQL脚本 过程
  • 执行SQL脚本时(使用DDL,DCL,DML(用于静态) content)命令)你假设当前的结构 环境在创建脚本时匹配结构。如果不, 然后,当您尝试添加新列时,您的脚本可能会失败 已经存在。
  • 将SQL脚本作为代码处理并手动生成它们将导致 语法错误,数据库依赖性错误,不是的脚本 可重复使用,使开发,维护, 测试那些脚本。另外,这些脚本可以运行在 环境与你运行的环境不同 上。
  • 有时版本控制存储库中的脚本不匹配 被测试的对象的结构,然后是错误 在生产中发生!

还有更多,但我认为你得到了照片。

我发现作品如下:

  1. 使用强制执行的版本控制系统 对数据库对象的签出/签入操作。这将 确保版本控制存储库与代码匹配 签入时,它会在签入中读取对象的元数据 操作而不是手动完成的分离步骤。这也允许 几个开发人员同时在同一个数据库上工作 防止他们意外地覆盖彼此的代码。
  2. 使用影响分析,利用基线作为一部分 比较以识别冲突并确定是否存在差异(何时 比较源控件之间的对象结构 存储库和数据库)是一个真正的变化,起源于 发展或来自不同道路的差异 然后它应该被跳过,例如不同的分支或 紧急修复。
  3. 使用知道如何为许多人执行影响分析的解决方案 模式一次,使用UI或使用API​​最终 自动化构建和部署过程。
  4. 我写的一篇文章发表于here,欢迎您阅读。