2010-07-13 96 views
0

我使用context_info來模擬一個全局變量,我在這裏使用它。爲什麼context_info可能會失敗?

我有幾個批次組成的腳本,我在開始時設置了一個全局變量(示例中的123),然後在所有批次使用該數字填充日誌表之後。

現在這個工作,但今天它在一臺機器上失敗,我不明白爲什麼。有沒有理由爲什麼context_info不應該工作?我試圖用123手動替換context_info,並且腳本成功。該腳本是從Delphi應用程序運行的。

DECLARE @GlobalInteger binary(128) 
SET @GlobalInteger =cast(123 as binary(128)) 
SET CONTEXT_INFO @GlobalInteger 
GO 

BATCH 1 
GO 

... 

BATCH N 
GO 

INSERT INTO TABLE_LOG VALUES (cast(context_info() as INT) 

回答

2

有一些備註CONTEXT_INFO文檔中:

多活動結果集(MARS) 使相同的連接上的應用程序運行多個 批次,或要求,同時 。當其中一個 MARS連接上的批處理運行 SET CONTEXT_INFO時,CONTEXT_INFO 函數在與SET語句在同一批 批處理中運行時,將返回新的上下文 值。新 值不被 CONTEXT_INFO函數運行在一個或 多個其他批次的返回 連接上,除非他們 後開始跑SET語句 完成

也有批次有關如何將值傳播到暴露它的各種視圖(sys.dm_exec_requests,sys.dm_exec_sessions和CONTEXT_INFO本身)的一些說明,請參閱使用Session Context Information。在一些地方,信息可以立即看到,其他地方只有在批次完成後才能看到。

相關問題