谁能提供一些真实的例子来说明如何最好地在 SVN(或其他)存储库中保留视图、存储过程和函数的脚本文件。

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

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

有想法吗?

有帮助吗?

解决方案

对我来说,听起来您不想正确使用修订控制。

显然,一种解决方案是将目录中所有不同组件的脚本文件或某个地方的所有不同组件放在某个地方,而只是使用Tortoisesvn或类似的内容将它们保存在SVN中

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

仅仅因为距离上次提交已经“X”时间而提交半完成的代码是草率的,并且肯定会导致其他使用存储库的人感到悲伤。

其他提示

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

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

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

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

这种方法非常适合维护变更历史记录。但是,当然,您永远不应该自动提交“生产版本”(除非您喜欢损坏的版本)。

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

我会推荐 红门 SQL Compare 用于此 - 它允许您比较数据库版本并生成更改脚本 - 它也相当容易编写脚本。

根据您扩展的问题,您确实想使用 DDL 触发器。查看 本文 详细介绍了如何为数据库创建变更日志系统。

但不确定你的价格范围 数据库幽灵 可能是您的一个选择。

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

我应该多描述一些。该数据库适用于内部 ERP 系统,因此我们的数据库没有很多版本,只有生产/测试/开发版本。当我们完成变更请求、一些新的奇特功能或其他内容时,我们只需执行一个脚本或一系列脚本来更新测试数据库上的相关过程,如果一切顺利,那么我们对生产执行相同的操作。

因此,我并不是真正想要一个完整的架构脚本本身,只是想要能够跟踪一段时间内对存储过程的各种编辑的东西。例如,PROCESS_INVOICE 可以做一些事情。它在三月份进行了一些小的更新。一段时间后,比如五月,我们发现在极少数情况下,客户会收到双重发票(或其他一些疯狂的极端情况)。我希望能够了解此过程随着时间的推移发生了什么。目前,这里设置开发环境的方式我没有,我正在尝试更改。

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

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

我编写了一个实用程序,用于将数据库的所有相关部分转储到我使用 SVN 的目录结构中。我从来没有抽出时间尝试将其合并到 Manager 中,但是,如果您有兴趣,它就在这里: http://www.reluctantdba.com/dbas-and-programmers/sqltools/svnforsql2005.aspx

它是免费的,而且由于我经常运行它,所以任何错误都会很快得到修复。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top