现在我们有一堆数据库服务器,其中运行着存储过程,但这些存储过程的文档记录很少,并且不存在于其他地方。
当进行更改时,没有日志,并且真的很难弄清楚为什么正在工作的东西突然失败。
我们最近转而使用 SVN 进行适当的版本控制,因此我希望将这些存储过程添加到版本控制中。
我们是一家 .Net 商店,我知道存在
Database
项目类型。这是一个好方法吗?
或者,我可以将存储过程保留为文本文件并对其进行操作,但我想知道这样做所涉及的烦人的部署步骤。
查看 redgate 的 sql 源代码控制。它有一个内置于 SSMS 的接口,并且可以与 SVN 集成。
http://www.red-gate.com/products/sql-development/sql-source-control/
在 Visual Studio 中,我创建了一个空项目并向其中添加了脚本。它是我的服务器架构解决方案的一部分。现在每个脚本都在源代码控制之下。我还添加了一个文件夹结构以尝试保持理智。当应用程序完成时,我们可能会在多个服务器模式下在源代码控制下拥有近 3000 个脚本。并不是说这是最好的,但它适用于我们的项目。该解决方案还有一个实用程序,它使用 SMO 实际运行/部署所有脚本,因此所有内容都包含在一个解决方案中。随附的屏幕截图显示了一些结构供您参考......
数据库项目是一个不错的选择。您可以导入整个数据库,包括表、视图、存储过程等。Visual Studio 将使用这些信息构建数据库的内存模型。
它可以将其用于多种目的,包括确保您的存储过程正确访问表。例如,它发现我试图将整数参数插入到smallint列中。
您可以首先创建一个空数据库项目,然后从现有数据库同步到您的项目,这会为您创建 .sql 创建脚本。
您也可以使用数据库项目来创建部署脚本。非常方便。
开发人员必须在源代码管理中对 DML 进行更改并将其签入,并且只有签入的内容才会被提升/部署。
我们的源代码管理是TFS,我注意到从VS界面删除proc并不总是在源代码管理中标记要删除的proc。不知道 SVN 用它做什么。