源代码控制下的存储过程,最佳实践

QFD*_*Dev 19 sql-server-2008 source-control sql-server stored-procedures version-control

我目前正在使用 Tortoise SVN 对 .NET Web 应用程序进行源代码控制。将我们的 SQL Server 存储过程引入源代码管理的最佳方法是什么?我目前使用 VS 2010 作为我的开发环境,并使用 SQL Server Data Tools (SSDT) 连接到外部 SQL Server 2008 R2 数据库。

我过去一直在做的是将 procs 保存到 .sql 文件并将这些文件保持在源代码控制之下。我确定一定有比这更有效的方法吗?我可以在 VS2010、SSDT 甚至生产机器上的 SQL Server 上安装扩展吗?

RoK*_*oKa 15

有一些工具,例如来自 Redgate 的工具,但我一直发现最好的方法是保存为 SQL 文件,甚至可能保存在您的解决方案中的数据库项目(SSDT?)中。

除此之外,我建议遵循以下准则:

  • 始终假定 SVN 版本为“当前”/“最新”
  • 确保您运行的每个脚本if exists then drop在开头都有一个合适的“ ”
  • 请记住编写您的权限(如果有)

您最初可以通过直接从 SSMS 编写脚本来创建这些 SQL 文件,并且您可以将 SSMS 设置为编写所有“ drop”和“ create”以及您的权限的脚本。

  • 如果更改其他视图/过程引用的表/视图,请注意“如果存在它们会删除,(重新)创建新定义”。我遇到过这样的情况,由于查询计划被重用而没有重新编译假设先前的结构,因此此类依赖视图的输出已损坏(列类型和内容已移动但名称未移动)。一个更安全的选项是“如果不存在则创建虚拟”,然后是“alter table/view/proc”,因为alter将根据需要遵循sysdepends记录使计划无效,并且drop+create不会因为drop擦除此类记录而create不会扫描悬空参考。 (3认同)