All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ASP.NET通过IE直接打印_[Asp.Net教程]
asp.net2.0网站语法之页面指令
自己编写基于MVC的轻量级PHP框架_[PHP教程]
[delphi语法4]数据类型:枚举类型
IsPostBack深入分析_[Asp.Net教程]
HTML组件HTML COMPONENTS之五_[Html教程]
ASP.NET Remoting体系结构(八)
SQL SERVER 2000 数据库备份与还原_[SQL Server教程]
php实现下载功能_php资料_编程技术
在PHP中全面阻止SQL注入式攻击之三_[PHP教程]
Reading number is top 10 pictures
鸡蛋的新玩法
XuYing poker perspective garment debut
2012 national geographic daily picture9
So beauty, will let you spray blood8
From China fortress sora aoi1
Sell the barbecue as says father du breul5
Look for from human art net, is good--2
六种更聪明的工作方法
一个武林高手的故事
The household of rural style is designed
Download software ranking
Popkart Cracked versions Mobile phone games
网页特效实例大全
Unix video tutorial6
天龙八部十二宫服务端
matrix2
Unix video tutorial7
仙剑奇侠传98硬盘WINXP版
Boxer vs Yellow4
Tram sex maniac 2 (H) rar bag6
dreamweaver8中文版
归海一刀 published in(发表于) 2014/2/1 0:12:32 Edit(编辑)
SQL,Server如何得详细错误处理信息_[SQL,Server教程]

SQL,Server如何得详细错误处理信息_[SQL,Server教程]

SQL Server如何得详细错误处理信息_[SQL Server教程]

在最近的一篇文章中,我讲过如何在SQL Server2000中发现问题。在SQL Server 2005中处理错误,最重要的因素是@@ERROR变量。每个语句执行以后,你必须查询这个变量值,以保证没有使事务回滚的错误发生。这种方法有些麻烦,更重要的是,还容易出错。另外,在SQL Server 2000中能够处理的错误类型仅限于某些类型的错误。终止事务或批处理的错误就无法处理,也没有详细的错误信息。

  TRYCATCH


  SQL Server 2005提供TRYCATCH结构,它出现在许多现代迭代程序语言之中,如Java和C#中。此结构让你通过CATCH结构中的一系列新函数访问更为详细的错误信息,这些函数包括:


  ERROR_NUMBER:返回错误号码,与@@ERROR的值相同。


  ERROR_SEVERITY:返回调用CATCH块错误的严重程度。


  ERROR_STATE:返回错误状态号码。


  ERROR_LINE:返回错误发生的行号。


  ERROR_PROCEDURE:返回促使错误发生的存储程序和触发器的名称。


  ERROR_MESSAGE:返回错误的完整信息文本。


  在CATCH块内,你可以在任何地方应用这些函数,它们将返回与发生的错误有关的信息。在CATCH块外,这些函数返回零值。


  处理死锁错误


  让我们来看一个例子,了解如何应用SQL Server 2005中的新错误处理功能来处理死锁情形,在SQL Server 2000的数据库级别下,这种问题几乎无法处理。


  计算机中存在资源竞争就会发生死锁。这种情形并非仅发生在数据库管理系统中,还发生在操作系统或其他任何出现资源争夺的系统中。当一个进程锁定特定的资源,而又需要另外的资源来完成任务时,就会发生死锁。如果另一个进程锁定了第一个进程需要的资源,而且还需要第一个进程获得的资源,就会出现僵局。两个进程都不愿释放自己的资源,意味着两个进程都不能完成自己的任务。


  不过,SQL Serve中本身就存在一个运算法则,在这种情形下,它会随机选择一个失败者,这个失败者释放自己的资源以便另一个进程能够完成自己的任务。这就意味着那个被终止的进程必须再次尝试。在SQL Server 2000及更早的版本中,解决这种情形的最佳方法是在业务层专门针对死锁编写代码,如果探测到死锁情况,就再次尝试事务。随着时间的推移,如果你注意到死锁情形发生的趋势,你就可以在存储程序中包括逻辑,设定死锁的优先权。这种方法允许你在死锁情形下选择失败者,但你无法再次尝试被终止的进程。


  用SQL Server 2005,你能够在数据层发现错误,这样业务层开发人员就不必担心事务再次尝试问题。如果你能够发现一个死锁错误,你就需要再次尝试语句(可能要在一段时间之后,以便释放所需的资源)。


  为说明这些新功能的运作情况,查看列表A。表中的代码用来记录发生的错误。我希望记录错误处理函数的所有信息,以及错误发生的日期和发生错误的数据库。


  我将用列表B中的代码来记录程序中发生的所有错误。注意你不必给程序设定任何参数,此程序将访问上面描述的错误处理函数。这是因为在执行CATCH块的时候,你可以调用这个程序。即使调用了其他程序,你也可以在CATCH块的任何地方参考这些函数。


  列表C专门用来查检死锁错误号,此时为1205。如果FicticiousTable1更新时发生死锁错误,语句即被重试三次。如果重试三次后还不能成功更新,就停止更新此表。


  SQL Server 2005错误处理的优点


  与之前的版本相比,SQL Server 2005提供了一种更为稳健的错误处理工具。在SQL Server 2000数据库层几乎无法处理的死锁问题,现在也能轻松解决。利用这些新功能,你能够将更多精力放在IT商业策略开发上,不用过于关注错误处理。


来源:网络







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.