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

Sql server 如何在SVN/其他存储库中保存存储过程和其他脚本?,sql-server,svn,tortoisesvn,repository,Sql Server,Svn,Tortoisesvn,Repository,任何人都可以提供一些真实的例子,说明如何最好地将视图、存储过程和函数的脚本文件保存在SVN(或其他)存储库中 显然,一种解决方案是将所有不同组件的脚本文件放在一个目录或多个地方,并简单地使用TortoiseSVN或类似工具将它们保存在SVN中,然后每当需要进行更改时,我就在managementstudio等中加载脚本。我真的不希望这样 我真正喜欢的是某种我可以定期(每晚?)运行的批处理脚本,它将导出在给定时间段内更改的所有存储过程/视图等,然后将它们提交给SVN 想法?我发现最好像对待任何其他可

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

显然,一种解决方案是将所有不同组件的脚本文件放在一个目录或多个地方,并简单地使用TortoiseSVN或类似工具将它们保存在SVN中,然后每当需要进行更改时,我就在managementstudio等中加载脚本。我真的不希望这样

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


想法?

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

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

显然,一个解决办法是 所有不同类型的脚本文件 一个或多个目录中的组件 在某处简单地使用乌龟 或者想把他们留在SVN

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


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

不确定您的价格范围,但是您可以选择


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

我建议使用SQL Compare进行此操作-它允许您比较数据库版本并生成更改脚本-它也很容易编写脚本。

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

  • 删除脚本目录的内容
  • 使用类似的方法将所有对象导出到脚本/脚本
  • svn提交
请注意:尽管您将对象置于源代码管理之下,但您不会拥有数据或其进度(是重命名的字段,还是1个新字段和1个已删除的字段?)

这种方法适用于维护更改历史记录。但是,当然,您永远不应该自动提交到“生产构建”(除非您喜欢损坏的构建)


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

我应该更具描述性。该数据库用于内部ERP系统,因此我们的数据库版本不多,只有生产/测试/开发。当我们完成了一个变更请求、一些新的奇特特性或其他事情时,我们只需执行一个或一系列脚本来更新测试数据库中的相关过程,如果这些都是好的,那么我们也会对生产进行同样的操作


因此,我并不是真正想要一个完整的模式脚本本身,而是一个可以跟踪存储过程随时间变化的各种编辑的脚本。例如,发票的处理就是这样。它将在三月份以一些小的方式更新。一段时间后,比如说5月,人们发现,在一种罕见的情况下,客户会收到双重发票(或其他疯狂的情况)。我希望能够看到随着时间的推移,在这个过程中发生了什么。目前,我没有开发环境的设置方式,我正在尝试改变这种方式。

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

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


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

我编写了一个实用程序,用于将数据库的所有相关部分转储到我使用SVN的目录结构中。我从未尝试将其纳入经理,但如果您感兴趣,可以在这里:


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

根据您的扩展问题,您确实希望使用DDL触发器。查看有关如何为数据库创建变更日志系统的详细信息。

Excelle Ivan。这正是我想要的。任何值得一试的源代码管理系统都有完整的历史记录,您可以将其与过去的版本区分开来。下面的内容听起来很奇怪:“仅仅因为上次提交代码已经过了“X”时间而提交完成了一半的代码是草率的,而且肯定会导致其他使用存储库的人感到悲伤。”您应该创建自己的分支,并尽可能频繁地提交,如果您愿意的话,可以提交半成品代码。完成后,将其合并回主干。这绝对是Git/HG/etc方式。以我的经验来看,SVN没有这么多