一、首先從SQLServer中Error講起,SQL中錯(cuò)誤處理有些怪辟 錯(cuò)誤級(jí)別同是16但結(jié)果都不同。 以下是引用片段: select * from 一個(gè)不在的表 if @@error0 print '這個(gè)沒有輸出' go raiserror('',16,3) if @@error0 print '這個(gè)輸出了' go exec('select * from 一
一、首先從SQLServer中Error講起,SQL中錯(cuò)誤處理有些怪辟 錯(cuò)誤級(jí)別同是16但結(jié)果都不同。
以下是引用片段: select * from 一個(gè)不在的表 if @@error<>0 print '這個(gè)沒有輸出' go raiserror('',16,3) exec('select * from 一個(gè)不在的表') exec sp_executesql N'select * from 一個(gè)不在的表' |
這樣你可以發(fā)現(xiàn)通過exec或sp_executesql執(zhí)行可疑的sql,這樣就可以在后面捕捉到被異常終止的錯(cuò)誤。
二、引出孤立事務(wù):
1、孤立事務(wù)的產(chǎn)生
以下是引用片段: select @@trancount 當(dāng)前連接的活動(dòng)事務(wù)數(shù) --當(dāng)前連接的活動(dòng)事務(wù)數(shù)為0 begin tran select * from 一個(gè)不在的表 commit tran |
select @@trancount 當(dāng)前連接的活動(dòng)事務(wù)數(shù) --執(zhí)行后你看看 當(dāng)前連接的活動(dòng)事務(wù)數(shù)為1,且重復(fù)執(zhí)行會(huì)每次累加,這是很耗資源的。
應(yīng)為rollback根本就沒有被回滾。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com