阅读另一个未提交的会话 - 临时表数据

时间:2014-04-14 13:16:07

标签: sql-server sql-server-2008 tsql

事情是......

我的sp抛出错误:字符串或二进制数据将被中继。

我使用sql profiler跟踪代码片段以找到它出现的行 我需要获取正在插入的数据。

我添加了将数据插入临时表的代码,并认为我能够 从另一个会话中读取其内容(当该会话仍在进行中时 - 未提交)和......

遗憾的是,即使使用nolock提示,select语句也会挂起...在未提交的隔离级别下。

一般来说,我想获取因错误而回滚的数据。

有可能吗?我该怎么办?

1 个答案:

答案 0 :(得分:1)

临时表是会话范围的。如果你在tempdb中检查sys.tables,你会发现你的#t表实际上就像是

#t__________________________________________________________________________________________________________________000000000006

所以,你无法从另一个会话中读到它。

更重要的是,临时表在回滚交易中无法生存。为了能够在回滚后读取数据,请使用表变量,并在回滚后将其保存到永久表中,您可以查询。