如何在SVN /其他存储库中保存存储过程和其他脚本?

时间:2008-09-09 06:19:51

标签: sql-server svn tortoisesvn repository

任何人都可以提供一些真实示例,说明如何最好地保存SVN(或其他)存储库中的视图,存储过程和函数的脚本文件。

显然,一个解决方案是将目录中的所有不同组件的脚本文件放在某个地方,并简单地使用TortoiseSVN等将它们保存在SVN中,然后每当要进行更改时,我都会加载脚本管理工作室等我真的不想要这个。

我真正喜欢的是某种批处理脚本,我可以定期运行(每晚?),它会导出在给定时间范围内已更改的所有存储过程/视图等,然后将它们提交给SVN。

想法?

10 个答案:

答案 0 :(得分:10)

听起来你不想让我正确使用版本控制。

  

显然,一个解决方案是拥有   所有不同的脚本文件   目录中的组件或更多   某处,只是使用TortoiseSVN   等等,让他们保持在SVN

这是应该做的。您将拥有正在处理的本地副本(开发新的,调整旧的等),并且当单个组件/过程/等完成时,您将单独提交它们,直到您必须开始该过程。

提交半完成代码只是因为它自上次提交以来一直是'X'时间是草率的并且保证会导致其他人使用存储库悲伤。

答案 1 :(得分:4)

我发现最好像处理任何其他可编译的代码一样处理存储过程:代码存在于存储库中,您检查它以进行更改并将其加载到开发工具中以编译或部署代码。

答案 2 :(得分:4)

您可以创建批处理文件并安排它:

  • 删除脚本目录的内容
  • 使用ExportSQLScript之类的东西将所有对象导出到脚本/脚本
  • svn commit

请注意:虽然您将拥有源代码控制下的对象,但您不会拥有数据或它的进展(是重命名的字段,还是1个新字段,1个已删除?)。

此方法适用于维护更改历史记录。但是,当然,你永远不应该自动提交“生产构建”(除非你喜欢破坏版本)。

虽然你没有要求它:这种方法也不会产生一组升级当前数据库的脚本。您将只有初始创建脚本。记录数据进展和创建升级脚本超出了基本的源代码控制系统。

答案 3 :(得分:1)

我建议使用Redgate SQL Compare - 它允许您比较数据库版本并生成更改脚本 - 它也非常容易编写脚本。

答案 4 :(得分:1)

根据您的扩​​展问题,您确实想要使用DDL触发器。查看this article,其中详细说明了如何为数据库创建更改日志系统。

答案 5 :(得分:0)

不确定您的价格范围,但DB Ghost可能是您的选择。

我不为这家公司工作(或拥有该产品),但在我对同一问题的研究中,这款产品看起来非常有前途。

答案 6 :(得分:0)

我应该更具描述性。有问题的数据库是针对内部ERP系统的,因此我们没有很多版本的数据库,只有生产/测试/开发。当我们完成一个更改请求,一些新的特殊功能时,我们只需执行一个脚本或一系列脚本来更新测试数据库中的相关程序,如果这一切都很好,那么我们对生产做同样的事情。

所以我并不是真正完成一个完整的架构脚本本身,只是可以跟踪存储过程随时间的各种编辑。例如,PROCESS_INVOICE可以完成任务。它在三月以一些小的方式更新。一段时间之后,在5月份发现,在极少数情况下,客户会获得双重发票(或其他一些疯狂的角落案例)。我希望能够看到随着时间推移这个程序发生了什么。目前在这里设置开发环境的方式我没有那个,我正在尝试改变。

答案 7 :(得分:0)

我可以推荐DBPro,它是Visual Studio Team Edition的一部分。已经使用它几个月用于在Team Foundation Server中存储数据库的所有部分以及部署和数据库比较等。

当然,正如其他人提到的,这取决于您的环境和价格范围。

答案 8 :(得分:0)

我编写了一个实用程序,用于将我的数据库的所有相关部分转储到我使用SVN的目录结构中。我从来没有尝试将其纳入经理,但如果您有兴趣,请点击此处:http://www.reluctantdba.com/dbas-and-programmers/sqltools/svnforsql2005.aspx

它是免费的,因为我经常运行它,你知道任何错误都会很快修复。

答案 9 :(得分:-2)

您始终可以尝试将SourceSafe与SQL Server集成。这是一个快速入门:link。要使用它,您必须拥有Managment Studio Developers Edition。