2010-07-13 4 views
0

전역 변수를 시뮬레이트하기 위해 context_info를 사용하고 있는데,이 컨텍스트에서 사용합니다.왜 context_info가 실패 할 수 있습니까?

여러 개의 배치로 구성된 스크립트가 있는데, 처음에는 전역 변수를 설정하고 (예 : 123) 로그 테이블을 채우기 위해 모든 번호를 사용합니다.

이제는 작동하지만 오늘은 한 대의 컴퓨터에서 작동하지 않았습니다. 그 이유는 알 수 없습니다. context_info가 작동하지 않아야하는 이유가 있습니까? context_info을 수동으로 123으로 바꾸려고했으나 스크립트가 성공적이었습니다. 이 스크립트는 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 문과 동일한 일괄 처리에서 실행될 때 새 컨텍스트 값이 반환됩니다. 그들이 후

도 있습니다 완료 SET 문을 실행 한 배치를 시작하지 않는 한 새로운 값은 연결에서 다른 배치의 하나 이상에 CONTEXT_INFO 함수 실행에 의해 반환되지 않습니다 값을 노출하는 다양한 뷰 (sys.dm_exec_requests, sys.dm_exec_sessions 및 CONTEXT_INFO 자체)에 값이 전파되는 방식에 대한 설명은 Session Context Information 사용을 참조하십시오. 일부 장소에서는 정보가 즉시 표시되고 다른 곳에서는 배치가 완료된 후에 만 ​​표시됩니다.

관련 문제