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

时间:2020-03-05 18:49:52  来源:igfitidea点击:

任何人都可以提供一些有关如何最好地将脚本文件用于视图,存储过程和函数保存在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"次来提交半完成代码是草率的,并且肯定会导致其他人使用存储库悲伤。

回答

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

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

回答

我建议为此使用Redgate SQL Compare,它使我们可以比较数据库版本并生成更改脚本,它也很容易编写脚本。

回答

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

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

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

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

尽管我们并没有要求:这种方法也不会产生将升级当前数据库的脚本集。我们将只有初始创建脚本。记录数据进度和创建升级脚本超出了基本的源代码控制系统。

回答

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

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

回答

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

回答

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

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

回答

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

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

回答

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