如何将现有的SQL Server存储过程添加到源代码控制?

6

现在我们有一堆数据库服务器,其中运行着文档不完善且不存在于其他地方的存储过程。

当对其中一个进行更改时,没有日志记录,很难弄清楚为什么原本正常的东西突然失败了。

最近我们转而使用 SVN 进行适当的版本控制,因此我希望将这些存储过程添加到版本控制中。

我们是 .Net 店,我知道存在一个 Database 项目类型。这是否是一个好的方法?

或者我可以将存储过程保留为文本文件并对其进行操作,但我想知道执行此操作所涉及的烦人部署步骤。


据我所知,数据库项目类型用于创建 SQL CLR 项目... - Brian Driscoll
@John 谢谢你让我知道 - 我没有那个特定项目类型的第一手经验。 - Brian Driscoll
1
@brian,如果你不知道,为什么还要评论呢?只是说说而已。 - John Saunders
@John,我想我认为我的二手知识足够了,但显然不是。你的观点完全正确。 - Brian Driscoll
你在这里有几个选择:如何对数据库架构进行版本控制? - reggie
5个回答

5

3
在Visual Studio中,我创建了一个空项目并将脚本添加到其中。这是我的服务器架构解决方案的一部分。现在每个脚本都处于源代码控制下。我还添加了文件夹结构来保持清晰明了。当应用程序完成后,我们可能会有多个服务器架构下近3000个脚本都处于源代码控制下。不是说这是最好的方法,但对于我们的项目来说它能够工作。该解决方案还具有一个实用程序,它使用SMO来运行/部署所有脚本,因此所有内容都包含在一个解决方案中。附上屏幕截图以供参考...

2
一个 数据库项目 在我看来是个不错的选择。你可以导入整个数据库,包括表、视图、存储过程等等。Visual Studio 将使用这些信息来构建一个内存模型。
它可以用于多种目的,包括确保你的存储过程正确地访问了表。例如,它曾经抓住了我试图将一个整数参数插入到 smallint 列中的错误。

据我所知,这确实需要Ultimate版本(至少在Professional版本中没有)。 - Andomar
它是高级版和终极版。 - John Saunders

1

我们使用数据库项目,并且取得了良好的结果。所有的DML都存在于该项目中(3000+项)。

开发人员必须在源代码控制中更改DML并进行检入,只有检入的内容才能被推广/部署。

我们的源代码控制是TFS,我注意到从VS界面中删除过程并不总是标记要从源代码控制中删除的过程。不确定SVN对此做了什么。


1

是的,我会建议一个数据库项目 - 您可以在两个方向上同步数据库元素(表/存储过程等):源文件到数据库或数据库到源文件。

您可以从创建空数据库项目开始,然后从现有数据库同步到您的项目,这将为您创建.sql创建脚本。

而且,您还可以使用数据库项目创建部署脚本。非常方便。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接