是否有可用于集成SQL代码和Subversion版本的工具/技术?

问题描述:

是否有任何工具/技术可用于集成SQL代码和Subversion版本控制?是否有可用于集成SQL代码和Subversion版本的工具/技术?

没错,看看红门SQL Source Control一个选项

+0

我可以对SVN使用SQL Source控件 - Subversion吗? – Jags 2011-03-07 12:45:11

+0

@Jags:是的。检查站点提供了哪些列表支持的存储库 – gbn 2011-03-07 12:47:10

+0

@Jags - 是的,它支持SVN和TFS,支持更多即将推出的功能(Vault,Vault Pro,Mercurial,Perforce,CVS,Git和Bazaar) - http:// www .red-gate.com /产品/ SQL开发/ SQL-源控制/功能 – AdaTheDev 2011-03-07 12:47:33

在IDE中,你可以从红门使用SQL源控制

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

我喜欢为此目的分离代码和数据。因此,Views,StoredProcs,函数像正常一样获得版本控制,但对表,索引和数据的更改会作为增量更改进行存储。

如果您有预算,VS2010 Team System是一个不错的选择,正如RedGate Sql Source Control一样。

这就是说,推出自己的产品并不难。你需要两个组件:

  1. 脚本拉从数据库中的所有代码对象到磁盘
  2. 脚本部署从磁盘代码对象到DB

我有一些样品如何做到这一点的https://github.com/ScottWeinstein/PSIS

我有一个开源工具包项目(下LGPL许可),它试图解决与适当的数据库架构版本(及以上)的问题上,bsn ModuleStore

基本上,它的独立部分将数据库模式的SQL Server数据库对象脚本编写到应用了标准格式的文件中,以便仅当对象确实发生更改时文件内容才会发生更改(与脚本由VS完成,它编写一些脚本日期等,标记所有对象,即使它们实际上完全相同)。

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

根据您希望访问数据库的方式,工具集提供的功能甚至更多 - 它实现了一些ORM功能,并提供了一种非常好的有用的基于接口的方法来调用存储过程,其中包括对本机XML的透明支持。 NET XML类以及TVPs(Table-Valued Parameters)作为IEnumerable<PocoClass>