Sql-Server
如何從創建它的事務外部檢查全域臨時表
為了幫助調試一批 SQL(在事務中執行),在事務中我將一些數據轉儲到全域臨時表中。全域臨時表是在事務內部創建的(我沒有選擇,因為我不在這裡討論)。
我想我可以通過使用“with(nolock)”從事務外部(即在不同的連接下)從臨時表中進行選擇。但是,選擇被阻止完成。
有沒有辦法從事務外部的臨時表中進行選擇?
將此歸檔在“僅僅因為你可以,並不意味著你應該”下
如果您在第一個會話中生成綁定令牌,並以某種方式發布它,您可以從另一個會話加入其事務。
例如來自 spid 61:
if @@TRANCOUNT > 0 rollback go begin transaction select * into ##t from sys.objects declare @bind_token varchar(255); exec sp_getbindtoken @bind_token output declare @bind_token_bin as varbinary(128) = cast(@bind_token as varbinary(128)) set context_info @bind_token_bin --rollback
然後從另一個會話
declare @bind_token varchar(255) = ( select cast(context_info as varchar(255)) from sys.dm_exec_sessions where session_id = 61 ) exec sp_bindsession @bind_token go select * from ##t