高手指点:嵌套事务回滚后如何在表中记录嵌套层的日志?(SQL SERVER) 带事务的存储过程A在事务中调用另外一个带事务的存储过程B,在B中存在各种记录业务运行过程以及错误的语句(写日志表)。但如果A回滚了,那么B的所有操作也回滚了,有没有什么办法让日志记录脱离事务的控制?或者有其他什么巧妙的方法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 创建事务保存点:SAVE TRANSACTION savepoint_name SQL Server 不像 oracle 一样支持 autonomous_transaction,但是有几种变通的方法:其一,将存储过程 b 做成 clr 存储过程,事务回滚时不会影响 clr 存储过程。其二,在 SQL Server 2008 中,可以通过使用 LOOPBACK 服务器链接,让嵌套事务拥有独立的事务作用域。具体方法:建立 LOOPBACK 服务器链接(EXEC sp_addlinkedserver @server = N'loopback',@srvproduct = N' ',@provider = N'SQLNCLI', @datasrc = @@SERVERNAME);设置服务器链接选项,阻止 SQL Server 由于远程过程调用而将本地事务提升为分布事务(EXEC sp_serveroption loopback,N'remote proc transaction promotion','FALSE');在嵌套事务中通过 LOOPBACK 服务器连接调用过程(EXEC loopback.dbname.dbo.proc)。 我用的是sqlserver 2005,每个存储过程都建立了事务保存点纠结中... 嵌套调用的 t-sql 存储过程都处于一个事务作用域中。看样子只能写 clr 存储过程。 使用bcp 报错:命令行中的参数 'and' 未知。 关于SQL SERVER的备份与恢复,求教:如何恢复到故障时刻? 为什么会这样?求助中~ 服务器: 消息 2714,级别 16,状态 6,行 2 数据库中已存在名为 'test' 的对象 如何使用SQL变量获取一个存储过程的返回值 请问一个繁简体的中文问题 求超难度报表统计解决方案.. 向疯子提问。答对才能拿走分。。。 请教php的傻瓜安装法 高分 取出表中n条相同数据内容 技术问题讨论,欢迎大家踊跃发言! SQL 插入临时表 的问题 关于view超时的问题,多表链接。
创建事务保存点:SAVE TRANSACTION savepoint_name
具体方法:
建立 LOOPBACK 服务器链接(EXEC sp_addlinkedserver @server = N'loopback',@srvproduct = N' ',@provider = N'SQLNCLI', @datasrc = @@SERVERNAME);
设置服务器链接选项,阻止 SQL Server 由于远程过程调用而将本地事务提升为分布事务(EXEC sp_serveroption loopback,N'remote proc transaction promotion','FALSE');
在嵌套事务中通过 LOOPBACK 服务器连接调用过程(EXEC loopback.dbname.dbo.proc)。