另一個雜牌可能爲你工作 - 這取決於許多臨時表是如何這裏涉及。
創建臨時表,作爲真實的表,一個名爲SPID一個額外的列,默認爲@@SPID
。
然後創建基於@@SPID
值訪問這些表的視圖,但過濾器。所有通過這個視圖進行的操作都應該看起來像是按照每個會話進行隔離的。例如:
create table temp_Boris (
SPID int default @@SPID,
ColA int,
ColB varchar(10)
)
go
create view vBoris
as
select ColA,ColB from temp_Boris where SPID = @@SPID
go
然後,在一個連接,運行以下命令:
insert into vBoris(ColA,ColB)
select 10,'abc' union all
select 20,'def'
go
select * from vBoris
,並在另一個連接,運行以下命令:
insert into vBoris(ColA,ColB)
select 10,'abc' union all
select 20,'def'
go
select * from vBoris
select * from temp_Boris
go
delete from vBoris
go
select * from vBoris
select * from temp_Boris
,你會看到每個連接能夠把「vBoris」有點像一個臨時表 - 當然,你可能需要添加解決這個(可能更多列)的附加程序來清除舊/過時的結果表。
好吧,我承認,它也感覺很醜。
這就是我提到的kludge。我很可能需要這樣做。 – 2011-03-07 10:36:26