当前位置:首页> 正文

关于SQL Server:如何将存储过程和其他脚本保留在SVN /其他存储库中?

关于SQL Server:如何将存储过程和其他脚本保留在SVN /其他存储库中?

How to keep Stored Procedures and other scripts in SVN/Other repository?

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

很明显,一种解决方案是将目录中或更多目录中所有不同组件的脚本文件保存,然后仅使用TortoiseSVN等将其保存在SVN中,然后每当进行更改时,我都将脚本加载到Management Studio等。我真的不想要这个。

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

想法?


听起来像您不想正确使用版本控制。

Obviously one solution is to have the
script files for all the different
components in a directory or more
somewhere and simply using TortoiseSVN
or the like to keep them in SVN

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

仅仅因为自从上次提交以来已经'X'时间而提交半完成代码是草率的,并且肯定会导致使用存储库悲伤的其他任何人。


您可以创建一个批处理文件并计划它:

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

请注意:尽管您将使对象处于源代码管理之下,但是您将没有数据或其进度(是重命名的字段,还是1个新字段和1个删除的字段?)。

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

尽管您没有要求它:此方法也不会生成将升级当前数据库的一组脚本。您只有初始创建脚本。记录数据进度和创建升级脚本超出了基本的源代码控制系统。


我发现最好像对待其他任何可编译代码一样对待存储过程:代码位于存储库中,您可以签出代码进行更改并将其加载到开发工具中以编译或部署代码。


根据您提出的问题,您确实想使用DDL触发器。请查看这篇文章,其中详细介绍了如何为数据库创建变更日志系统。


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


我编写了一个实用程序,用于将数据库的所有相关部分转储到使用SVN的目录结构中。我从未尝试过将其合并到Manager中,但是,如果您有兴趣,请访问:http://www.reluctantdba.com/dbas-and-programmers/sqltools/svnforsql2005.aspx

它是免费的,而且由于我定期运行,因此您知道所有错误都会很快得到解决。


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

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


我本来应该更具描述性。有问题的数据库用于内部ERP系统,因此我们的数据库版本不多,只有生产/测试/开发。完成更改请求,一些新功能或一些新功能后,我们只需执行一个脚本或一系列脚本来更新Testing数据库上有问题的过程,如果这一切都很好,则对Production进行相同的操作。

因此,我并不是真正地需要一个完整的模式脚本,而是可以随时间跟踪对存储过程进行的各种编辑的东西。例如,PROCESS_INVOICE做东西。它在三月份以较小的方式进行了更新。在说May的一段时间后,发现在极少数情况下,客户会收到双张发票(或其他一些疯狂的案例)。我希望能够看到随着时间的流逝,此过程发生了什么。目前,这里没有设置开发环境的方式,我正在尝试更改。


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

我不是为这家公司工作(或拥有该产品),但是在我研究同一问题时,该产品看起来很有希望。


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


展开全文阅读

相关内容