代码之家  ›  专栏  ›  技术社区  ›  UnDiUdin

为什么上下文信息会失败?

  •  1
  • UnDiUdin  · 技术社区  · 14 年前

    我使用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)
    
    1 回复  |  直到 14 年前
        1
  •  3
  •   Remus Rusanu    14 年前

    有一些评论 CONTEXT_INFO 文档:

    多个活动结果集(mars) 使应用程序能够运行多个 批处理或请求,同时 在同一个连接上。当其中之一 mars连接上的批处理运行 设置上下文信息,新上下文 值由上下文返回 当它运行在同一个 批处理为set语句。新的 值不是由返回的 上下文信息函数在一个或中运行 更多其他批次 连接,除非它们在 运行set语句的批处理 完整的

    还有一些关于该值如何传播到公开它的各种视图的解释(sys.dm ou exec_requests、sys.dm ou exec_sessions和context_info本身),请参见使用 Session Context Information . 在某些地方,信息立即可见,而在其他地方,只有在批处理完成后才可见。

    推荐文章