深入理解sql server 中的错误处理--

深入理解sql server 中的错误处理--

ID:20914647

大小:52.00 KB

页数:3页

时间:2018-10-17

深入理解sql server 中的错误处理--_第1页
深入理解sql server 中的错误处理--_第2页
深入理解sql server 中的错误处理--_第3页
资源描述:

《深入理解sql server 中的错误处理--》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、深入理解SQLServer中的错误处理>>  大多数迭代语言编译器都有内置的错误处理程序(例如,TRYCATCH语句),开发者们在设计代码的时候可以利用它们。虽然SQLServer2000的开发者不能够像迭代语言的开发者那样利用内置的工具,但是他们可以用系统变量ERROR来设计自己有效的错误处理工具。  引入事务  为了能够掌握在SQLServer2000中错误处理是如何工作的,你必须首先要理解数据库事务的概念。在数据库术语中,事务就是指作为一个单独的工作单位出现的一系列语句。举个例子来说,假设你有三个语句要执行,事务就可以这样被设计,要么所有三个语句都成功发

2、生,否则就一个都不发生。  在SQLServer中执行数据处理操作时,操作是在缓冲存储器中发生的,并不是立即被写入实际的表格中。然后,当SQLServer运行CHECKPOINT进程时,已经发生的变化才被写入磁盘。这也就意味着,在事务发生的过程中,变化并不被写入磁盘,直到它被提交了,才会被写入。运行时间较长的事务需要更多的处理存储空间,需要数据库保持更长时间的锁定。所以当你在工作环境中设计运行时间长的事务时,一定要小心。  下面是一个很好的例子,说明了利用事务的好处。从ATM中取钱需要以下几个步骤:输入一个PIN号码,选择一个帐户类型和输入你想要提取的资金的金

3、额。如果你试图从ATM中取出50美元,然后操作失败,你肯定不愿意在没有拿到钱的情况下被扣除50美元。事务就可以被用来保证这种一致性。  SQLServer2000中成功的错误处理需要始终如一地检查系统变量ERROR的值。ERROR是指在所有语句在给定的连接下,在服务器上被执行以后,由SQLServer数据库引擎更新的一个变量。这个变量中包括了相应的错误号码,如果有的话。你可以在主数据库的sysmessages表格中找到这些错误号码的列表。关于这个表格的详细资料在微软的网站上已经被列出。  下面是一个说明变量ERROR如何工作的例子:PRINT'Taki

4、ngalookatERROR'PRINTERROR  在这些指令中,我们将在屏幕上显示一个字符串,并输出变量ERROR的值。因为屏幕上输出的没有错误,所以ERROR的值为0。PRINT1/0PRINTERROR  在上面这个例子中,我们发生了用0作除数的错误,这样变量ERROR中将包括数字8134,它是微软给这种错误分配的错误代号。对于大多数错误处理来说,只有当ERROR的值不为0时,即显示有错误发生的时候,你才会关注到它。在记录错误的时候,留意每个错误号码不失为一个好办法,因为这样的话,在调试过程中,调用它们就很方便了。  工作中的错误处理  下面是

5、一个关于怎样在存储过程中利用错误处理的例子。示例脚本的目的是要执行一个存储过程,定义一个事务,然后在一个表格中插入一条记录。因为只是为了解释说明的目的,所以我们用以下的方式设计该程序,这样就可以知道到底是提交还是重新运行该项事务。  执行下面的语句来创建我们在例子将要用到的表格:CREATETABLETransactions(   TranIDSMALLINTIDENTITY(1,1)PRIMARYKEY,   EntryDateSMALLDATETIMEDEFAULT(GETDATE()),   ParamValueCHAR(1),   ThroValue和

6、ThroValueCHAR(1),ThroValue,ThroValue,ThroerrorhasbeenthroITTRANRETURN(0)ENDErrorHandler:BEGINROLLBACKTRANSACTIONRETURN(1)ENDENDGO  列表A  这个简单的存储过程展示了有效的错误处理必须具备的特征。首先,要明确定义一个事务。然后当一条记录插入事务表格之后,我们再检查参数ThrowError的值。该参数显示是否有错误发生,再用函数RAISERROR来指出自定义的错误。当函数RAISERROR被调用时,变量ERROR的值显示的就是我们所提

7、供错误的号码。  如果在存储过程中有错误发生,我们将重新运行所执行的事务。重新运行事务就意味着我们尝试插入事务表格的记录将会被移除,就像从来没有发生过一样。数据库的状态将与事务开始之前完全保持一致。  在这个例子中,你同样会注意到GOTO语句和ErrorHandler标签的使用。通常,使用GOTO语句在迭代编程语言中被认为是一种不好的编程习惯,但是在SQLServer2000错误处理时,它们就非常有用了。不要害怕用GOTO语句来处理错误。  下面这个程序调用将出现错误,记录将不会被插入事务表格中:DEC12下一页>>>>这篇文章来自..,。LAREReturn

8、CodeINTEXECUTERetur

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。