【发布时间】:2009-10-19 02:21:31
【问题描述】:
有多个文件系统
大多数版本控制工具都在本地磁盘文件系统上运行。
大多数关系数据库系统的数据库对象确实存在于文件系统中,因为有一个标识对象的文本名称,并且可以检索或至少使用该名称生成创建脚本。
但它不是本地磁盘文件系统,因此对于严格在本地磁盘文件系统上运行的 CVS 或 SVN 等工具来说,它们是不可见的。
为了将 SVN 应用于数据库对象,必须将它们复制到本地磁盘文件系统中,并且必须将本地磁盘文件系统的更改复制到数据库中。
不同的使用方式
与每个开发人员维护私有工作副本的源代码不同,开发人员倾向于在网络某处的服务器上的共享数据库上工作。虽然 Visual Studio 直接支持按需挂载项目本地数据库副本,但开发人员已避开此功能,因为没有方便可靠的方法来合并更改。
但是,一旦对数据库结构的更改由 CVS 或 SVN 等复制合并版本控制系统管理,传播和合并将大部分是自动的(条形冲突)和 不再有任何理由共享数据库。
排除 SCC 作为选项
Microsoft SQL Management Studio 支持对任何实现 SCC 规范的内容进行版本控制。微软只列出了 VSS (blech),但谷歌揭示了过多的选项。 然而,SCC 是关于锁定的 - 双盲。
文件系统间复制
现在整个问题转移到文件系统之间的复制问题上。 CodePlex 包含 VS2005/SQL2005 的实现,但不适用于 VS2008/SQL2008。
在这一点上,我认为“我应该如何解决这个问题”的基本问题已得到令人满意的解决,尽管我不确定如何奖励积分。
感谢所有相关人员的意见。
确实会出现一些具体问题,主要与如何编写各种类型的模式对象有关。
- 如何按依赖顺序提取
create和alter脚本- 表格
- 查看
- 存储过程
- 功能
- 触发器
- 索引
- 外键
- 如何按依赖顺序提取表填充脚本
- 如何有效检测架构更改(在
sys.objects上没有触发器的情况下,需要轮询;最好快速且便宜)
检测变化
我注意到,可以使用策略将操作绑定到架构中的更改。仍然存在依赖顺序以及如何编写表创建语句脚本的问题
【问题讨论】:
-
这是一个非常有趣的想法。很抱歉我没有这方面的经验,但我很想看到答案/
标签: sql-server svn samba vfs