sql server应用——取消存储过程执行注意回滚
最近在处理一个大数据量表数据清理任务,通过存储过程实现单次10w行记录的清理,通过go循环实现循环执行。
以下是演示的存储过程:
select * into test_BD_ACCOUNT from T_BD_ACCOUNT create proc Proc_BF_test as begin begin try begin transaction waitfor delay '00:00:02:00' insert into test_BD_ACCOUNT(FACCTID,FNUMBER,FPARENTID,FHELPERCODE,FGROUPID,FDC,FACCTTBLID,FISCASH,FISBANK,FISALLOCATE,FISCASHFLOW,FITEMDETAILID,FISQUANTITIES,FUNITGROUPID,FUNITID,FISDETAIL,FLEVEL,FCREATEORGID,FCREATORID,FCREATEDATE,FUSEORGID,FMODIFIERID,FMODIFYDATE,FAUDITORID,FAUDITDATE,FFORBIDSTATUS,FFORBIDDERID,FFORBIDDATE,FMASTERID,FISSYSPRESET,FDOCUMENTSTATUS,FCFItemID,FCFINDIRECTITEMID,FOCFITEMID,FOCFINDIRECTITEMID,FALLCURRENCY,FCURRENCYLIST,FCURRENCYS,FCONTROLORGID,FISSHOWJOURNAL,FAMOUNTDC,FISCONTACT,FUNMANUAL,FISINTERNALCONTACTS,FCONTACTSFLEX,FNUMBER1) select FACCTID,FNUMBER,FPARENTID,FHELPERCODE,FGROUPID,FDC,FACCTTBLID,FISCASH,FISBANK,FISALLOCATE,FISCASHFLOW,FITEMDETAILID,FISQUANTITIES,FUNITGROUPID,FUNITID,FISDETAIL,FLEVEL,FCREATEORGID,FCREATORID,FCREATEDATE,FUSEORGID,FMODIFIERID,FMODIFYDATE,FAUDITORID,FAUDITDATE,FFORBIDSTATUS,FFORBIDDERID,FFORBIDDATE,FMASTERID,FISSYSPRESET,FDOCUMENTSTATUS,FCFItemID,FCFINDIRECTITEMID,FOCFITEMID,FOCFINDIRECTITEMID,FALLCURRENCY,FCURRENCYLIST,FCURRENCYS,FCONTROLORGID,FISSHOWJOURNAL,FAMOUNTDC,FISCONTACT,FUNMANUAL,FISINTERNALCONTACTS,FCONTACTSFLEX,FNUMBER1 from T_BD_ACCOUNT commit transaction end try begin catch rollback transaction select ERROR_NUMBER() errorNumber, --错误代码 ERROR_SEVERITY() errorSeverity, --错误严重级别 ERROR_STATE() errorState, --错误状态码 ERROR_PROCEDURE() errorProcedure, --出现错误的存储过程或触发器的名称 ERROR_LINE() errorLine, --发生错误的行号 ERROR_MESSAGE() errorMessage end catch end
通过以下方式调用:
exec Proc_BF_test go 200
中间由于其他原因取消了存储过程
后续再次运行:
exec Proc_BF_test go 200
发现异常慢!!同时在另外的窗口查询test_BD_ACCOUNT数量完全没有变化!!
没想到是因为取消执行的时候,由于存储过程执行了 begin transaction,但是没有执行到提交或者回滚,到时窗口现在处于未提交的状态,后续置执行的脚本都是未提交的。自己先入为主认为ssms窗口还是自动提交的状态。
提醒自己,后续中途取消执行存储过程,如果内含事务,一定要根据情况提交或者回滚,再进行后续的执行。
你这个其实不用添加事务,数据库本身就会锁,异常会释放!自己写的话 要手动释放!
sql server应用——取消存储过程执行注意回滚
最近在处理一个大数据量表数据清理任务,通过存储过程实现单次10w行记录的清理,通过go循环实现循环执行。以下是演示的存储过程:select * ...
点击下载文档
本文2024-09-16 18:36:20发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-23232.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf
热门文章