日期:2011-05-02 15:22:00 来源:本站整理
全接触sqlserver非常与孤独事件[MSSQL防范]
本文“全接触sqlserver非常与孤独事件[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
?1、首先从sqlserver中error讲起,sql中错误处理有些怪辟?错误级别同是16但后果都差别.
??select?*?from?一个不在的表
??if?@@error<>0
????print?’’这个没有输出’’
??go
??raiserror(’’’’,16,3)
??if?@@error<>0
????print?’’这个输出了’’
??go
??exec(’’select?*?from?一个不在的表’’)
??if?@@error<>0
????print?’’这个输出了’’
??go
??exec?sp_executesql?n’’select?*?from?一个不在的表’’
??if?@@error<>0
????print?’’这个输出了’’
这样你可以发现通过exec或sp_executesql履行可疑的sql,这样便可以在背面捕捉到被非常终止的错误.
2、引出孤独事件:
??1、孤独事件的产生
????select?@@trancount?当前衔接的活动事件数?--当前衔接的活动事件数为0
????begin?tran
????select?*?from?一个不在的表
????if?@@error<>0
????begin
??????print?’’没有履行到这里来!’’
??????if?@@trancount<>0?rollback?tran
????end
????commit?tran
????select?@@trancount?当前衔接的活动事件数??--履行后你看看?当前衔接的活动事件数为1,且反复履行会每次累加,这是很耗资源的.
??应为rollback根本就没有被回滚.
??2、利用现有手段办理孤独事件
????print?@@trancount?print?’’当前衔接的活动事件数’’?--当前衔接的活动事件数为0
????if?@@trancount<>0?rollback?tran?--在这里写可以让孤独事件只保持到下次你的历程被调用
????begin?tran
????select?*?from?一个不在的表
????if?@@error<>0
????begin
??????print?’’没有履行到这里来!’’
??????if?@@trancount<>0?rollback?tran
????end
????commit?tran
????---履行后你看看?当前衔接的活动事件数为1,但反复履行不会累加
????print?@@trancount?print?’’当前衔接的活动事件数’’
3、利用?set?xact_abort?来掌握部份违反约束的错误的履行历程
??create?table?table1?(a?int?check(a>100))
??go
??set?xact_abort?on
??begin?tran
????insert?table1?values(10)
????print?’’这里没有被履行’’
??commit?tran
??go
??
??print?’’’’?print?’’==============================================’’?print?’’’’
??
??set?xact_abort?off
??begin?tran
????insert?table1?values(10)
????print?’’这里被履行’’
??commit?tran
??go
??drop?table?table1
但?set?xact_abort?关于编译产生的错误确没有起作用,且一样会产生孤独事件
??set?xact_abort?on
??begin?tran
????insert??一个不在的表?values(10)
????print?’’这里没有被履行’’
??commit?tran
??go
??print?’’’’?print?’’==============================================’’?print?’’’’
??set?xact_abort?off
??begin?tran
????insert??一个不在的表?values(10)
????print?’’这里没有被履行’’
??commit?tran
??go
??select?@@trancount?当前衔接的活动事件数?---有两个孤独事件
??if?@@trancount<>0?rollback?tr
以上是“全接触sqlserver非常与孤独事件[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论