是否有任何工具/技术可用于将SQL代码与Subversion集成以进行版本控制?

时间:2011-03-07 12:35:04

标签: sql-server svn

是否有任何工具/技术可用于将SQL代码与Subversion集成以进行版本控制?

4 个答案:

答案 0 :(得分:2)

是的,请查看Red Gate的SQL Source Control以获取一个选项

答案 1 :(得分:0)

在IDE中,您可以使用Red Gate的SQL Source Control

否则,您可以将对象编入source-controlled folder脚本。我们使用Red Gate(因为在SQL Source Control发布之前)

答案 2 :(得分:0)

我喜欢为此目的将代码与数据分开。因此,视图,StoredProcs,函数的版本控制与正常一样,但对表,索引,数据的更改将存储为增量更改。

如果您有预算,VS2010 Team System是一个不错的选择,RedGate Sql源代码控制也是如此。

那就是说,推出自己的东西并不难。你需要两个组件:

  1. 将所有代码对象从数据库中提取到磁盘的脚本
  2. 将代码对象从磁盘部署到数据库的脚本
  3. 我在https://github.com/ScottWeinstein/PSIS

    上有一些关于如何执行此操作的示例

答案 3 :(得分:0)

我有一个开源(LGPL许可)工具集项目,该项目试图解决与正确的数据库架构版本控制相关的问题(以及更多),bsn ModuleStore

基本上,它的独立部分将数据库模式的SQL Server数据库对象编写为应用了标准格式的文件,这样只有在对象确实发生更改时文件内容才会发生变化(与完成的脚本完全相反)通过VS,脚本编写一些脚本日期等,将所有对象标记为已更改,即使它们实际上是相同的。)

但是,如果使用.NET,工具集将超越它:它允许您将SQL脚本嵌入到库或应用程序中(作为嵌入式资源),然后将嵌入式脚本与数据库中的当前状态进行比较。非表相关的更改(根据Martin Fowler's definition不是“破坏性更改”)可以自动应用或根据请求应用(例如创建和删除视图,函数,存储过程,类型,索引等对象),和更改脚本(需要手动编写)也可以在同一个过程中应用;还会创建新表,可选择与其设置数据一起创建。更新后,再次将DB模式与脚本进行比较,以确保在提交更改之前成功进行数据库升级。

根据您希望如何访问数据库,工具集提供了更多功能 - 它实现了一些ORM功能,并提供了一种非常好用且基于接口的方法来调用存储过程,包括使用本机.NET透明地支持XML XML类以及TVP(表值参数)为IEnumerable<PocoClass>