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