6

我当前的 C# 项目开发环境是 Visual Studio,带有 SQL Server 数据库并使用 VisualSVN 连接到我的 SVN 存储库。为了管理我的存储过程、视图等的修订,我将ALTER脚本保存到我的 SVN 客户端监视的文件夹中,以便将它们包含在存储库中。

我已经查看了一些(现在较旧的)帖子,比如这篇文章(如何在 SVN/Other 存储库中保留存储过程和其他脚本?以及SQL Server Management Studio 2005 或 2008 是否有 SVN 插件?)并看到了关于这些工具:http ://www.red-gate.com/products/sql-development/sql-source-control/和http://www.zeusedit.com/agent/ssms/ms_ssms.html

由于我很少与进行大量 DB 端编程的项目一起工作,这从来都不是一个大麻烦(一个文件夹中的十几个脚本具有一些命名方案并不能手动管理),但我刚刚继承了一个有几百个的项目从未包含在版本控制中的视图和 1000 多个存储过程。

我的问题是:

其他人遵循什么流程来管理他们的 SQL Server 代码的版本控制——我在这里缺少一种可接受的、聪明的或其他明显的方法吗?我目前倾向于购买上述工具之一 - 但在我这样做之前正在寻求社区的建议。

我意识到这可能会导致工具推荐而不是代码解决方案,但会发布到 SO,因为我认为这是提出这个问题的合适人群。

4

2 回答 2

2

我建议您使用 redgate 工具之类的工具,并以与处理 C# 源代码相同的方式处理任何 SQL 数据库;随着修改数量的增加,手动跟踪 ALTER 语句会让你更晚或更晚。不能代表 zeus 编辑工具,但使用了 redgate 工具,它“正常工作” - 以及使用的另一个好处像这样的工具是它可以管理您的迁移脚本,因此您可以对您的开发版本进行大量更改,然后生成一个更新脚本来更新您的测试数据库等,包括数据更改,恕我直言,这是手动管理的最大 PITA .

要考虑的另一件事是,即使更改的数量很少,并且您可以手动跟踪 ALTER 语句,但如果其他人最终在同一个项目上工作怎么办?现在你有另一个管理不善的更改脚本的可能性....

无论如何,请让我们知道您的进展情况并祝您好运!

于 2013-02-13T23:58:57.007 回答
1

我一直在维护一个包含大约 800 多个 db 对象的数据库。正如您所描述的,我们一直只是将数据库对象编写到一个 svn-watched 文件夹中。我们在使用这种方法时遇到了一些问题,主要是人们忘记编写新的或修改过的对象的脚本。归根结底,这对我们的项目来说并不是什么大问题,但您的问题可能会有所不同。

我们研究了几个工具,但它们总是假设您是从零开始,我们想要保留将近 10 年的历史。最后,我们最终还是回到了我们基于文本的手动解决方案。它既便宜又容易。

您可能想要研究的另一个选项是设置 Visual Studio 数据库项目。它将编写所有对象的脚本并提供一些部署选项。我的观点是,过于紧密地集成到我们的口味是很累的——我们有一些对链接数据库的命名引用,它就是不会放弃的。

于 2013-02-14T00:03:21.290 回答