存储过程维护

时间:2009-05-22 14:01:23

标签: sql-server

在sql server中......

我应该通过查询分析器中的对象浏览器维护存储过程,还是作为外部文本文件?为什么?

6 个答案:

答案 0 :(得分:4)

外部文本文件可以放在源代码管理中,这是一个更好的解决方案。版本控制数据库很难,这是使数据库与依赖它的所有应用程序保持同步的一个重要步骤。

Microsoft的Visual Studio 2008数据库版本不仅可以实现对数据库脚本的版本控制,还可以在一个步骤,单元测试和其他有趣的事情中进行部署。

答案 1 :(得分:4)

...对源代码管理中的文本文件进行另一次投票。

  • 一个巨大的好处是修订历史。比较版本可以让您深入了解问题,并节省您的调试时间,特别是“我不知道他们为什么这样做”的多样性。
  • 如果您在一个数据库实例中遇到了其他人没有看到的问题,可以导出有问题的存储过程,将其与源代码控制中的内容进行比较,并确保跨实例保持一致。
  • 它使代码部署到新的数据库实例更容易控制。例如,您可以编写一个Ant任务来审计您的数据库模式,并有一个任务将该过程创建代码作为该过程中的一个步骤运行。
  • 您无需连接数据库即可查看过程源。这在恢复方案中可能特别有用。
  • 它强制执行保持脚本可用的规则,而不是让您的团队在GUI工具中进行一次性更改。 GUI工具会更改工作,但如果未在脚本中捕获,则会永久丢失。

答案 2 :(得分:1)

很多可能取决于您使用的SQL Server版本,以及回滚到以前版本的SQL的重要性。

我发现使用SQL Server 2005+,它更容易在SQL Server Management Studio中维护它们,因为它全部集成到.NET Framework中。

如果您定期备份数据库,我觉得将备份存储为外部文件会浪费时间。

当然,我完全理解人们希望使用像SourseSafe这样的东西来作为历史备份的额外外部来源。

答案 3 :(得分:0)

一旦你的系统变得足够大,使用对象浏览器找到你的存储过程可能是一个真正的痛苦(并且它不能很好地使它们非常可排序)。虽然我经常喜欢使用对象浏览器,但我可能会建议其他人从外部文件开始,这样你就可以从一开始就对它们进行源代码控制。

答案 4 :(得分:0)

有一个工具可以定期提取存储过程的文本,并将它们存储在源代码管理中。

这样,你就可以获得两全其美。您的文本文件存在并处于源代码管理中,您可以保证它们是最新的。如果有人在你不知情的情况下更改你的存储过程(作为我以前常常会做的老板),你会在“最近的变化”中迅速看到它。

答案 5 :(得分:0)

要么。

源代码管理中的外部文件给人一种很好的感觉,但无法像“普通”源文件那样控制或锁定或检出数据库对象。但是,这是很好的纪律。

如果您拥有强大的生产控制,良好的流程和代码差异工具,那么在对象浏览器中进行管理对于较小的项目是可行的,因为您始终可以检测差异并轻松重置它们。

我希望你不要在生产对象浏览器中意味着...