在SQL Server 2005中升级存储过程

日期: 2009-08-16 作者:Serdar Yegulalp翻译:司学峰 来源:TechTarget中国 英文

最近,我介绍了在SQL Server 2005中怎样的更改可能会破坏老的应用程序与数据库,尤其是使用过时的函数。现在,我们将讨论在您的迁移数据库中如何应用存储过程来发挥SQL Server 2005中的功能特性,同时又不与现有函数发生冲突。   假设您有一个前端应用程序,由不同的团队进行写入或管理,并且后台数据库没有经常升级。您仍然想更改SQL Server 应用程序的存储过程以利用其新特性。

您还想出色地漂亮的完成这些,而不导致数据库及前端系统发生故障。   例如,您可能想升级存储过程以便应用在SQL Server 2005的中T-_SQL的新函数中,诸如try 与catch函数,它们能够更容……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

最近,我介绍了在SQL Server 2005中怎样的更改可能会破坏老的应用程序与数据库,尤其是使用过时的函数。现在,我们将讨论在您的迁移数据库中如何应用存储过程来发挥SQL Server 2005中的功能特性,同时又不与现有函数发生冲突。

  假设您有一个前端应用程序,由不同的团队进行写入或管理,并且后台数据库没有经常升级。您仍然想更改SQL Server 应用程序的存储过程以利用其新特性。您还想出色地漂亮的完成这些,而不导致数据库及前端系统发生故障。

  例如,您可能想升级存储过程以便应用在SQL Server 2005的中T-_SQL的新函数中,诸如try 与catch函数,它们能够更容易的捕获复杂的错误。通常,您把现有的存储过程复制到一个新的、并行的存储过程,对此进行升级以应用新的函数,接着通过一个前端应用程序的修改版本(如果它可用)或者查询分析器来测试它们。

  当您确信正在运转的新存储过程应该并且准备好在生产环境中可以应用时,就可以通过重命名这两个存储过程或者复制代码对它们进行无缝切换或者通过重命名这两个存储过程或者通过复制代码。我个人更喜欢进行重命名,因为那样允许您对之前的代码进行备份----与数据库一起备份以防意外万一。

  可以说这是一个相当标准的技术,但是它之中还有这是一个很有趣的东西皱纹,我已经看到过关于涉及到它的可选参数:

  CREATE PROCEDURE my_procedure
  {other parameters go here},
  @optionalparameter Boolean=FALSE
  AS
  If @optionalparameter=TRUE
  Begin
  {NEW version of stored procedure with SQL Server 2005-specific commands goes here}
  End
  Else
  Begin
  {OLD version of stored procedure goes here}
  End

  另外还有一个好用的方法来对代码进行选择性测试其他有用的可选方式进行测试这些代码。当前的前端调用存储过程将不使用可选参数,而将执行原有老代码。您可以在新的前端代码中对此存储过程进行测试,之后优雅地升级到现用的存储过程。因为参数对所有现存的调用的存储过程都是可选的(即,那些没有参数),将如从前一模一样。

  如果您不被允许增加新的存储过程,但是允许对现有的进行修改,这是一个绕过这个限制很好的的好方法方式。如果仍然没有遗留代码,就可以在存储过程中对假设进行逐步取消。最后,在存储过程与前端代码中分离这个参数。

作者

Serdar Yegulalp
Serdar Yegulalp

Serdar Yegulalp从1994年到2001年为Windows杂志写作,覆盖了广泛的技术方面。他现在是《The Windows 2000 Power Users Newsletter》一书的出版者,辛勤钻研他擅长的Windows NT, Windows 2000 and Windows XP领域,并为TechTarget写专栏。

相关推荐