【问题标题】:Why context_info can fail?为什么 context_info 会失败?
【发布时间】:2010-07-13 14:18:52
【问题描述】:

我正在使用 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)

【问题讨论】:

    标签: sql-server delphi context-info


    【解决方案1】:

    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。在某些地方,信息是立即可见的,而在其他地方,只有在批处理完成后才能看到。

    【讨论】:

      猜你喜欢
      • 2016-04-11
      • 2021-10-10
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多