San*_*ket 4 sql-server dmv microsoft-dynamics
我正在尝试使用sys.dm_exec_sessions从context_info列获取信息,如下文所示:Cast(context_info as varchar(128))
在 Dynamics AX 2012 中从 SPID 查找用户会话作者:Amit R. Kulkarni
但是,对于某些行,context_info列为空。有人知道为什么吗?
该数据库是 Dynamics AX 数据库,我使用的查询是:
select cast(context_info as varchar(128)) as ci,*
from sys.dm_exec_sessions
where program_name like '%Dynamics%'
Run Code Online (Sandbox Code Playgroud)
这是输出,我不得不删除几列,但这几乎就是它的外观。如果您看到,会话 63 和 87 的 Context_info 为空。
CONTEXT_INFO需要由应用程序设置,Dynamics AX 为会话中包含的连接设置值。如果CONTEXT_INFO为空,则确实是因为应用程序未设置该属性。
当 AX 在特定会话中使用某些连接时,我们可以看到如下所示的CONTEXT_INFO跟踪设置:ETW
我做了几次测试,即使在构建我自己的连接或使用AX 中的类时,也无法创建CONTEXT_INFO未正确设置的情况。ODBCConnection()
由于您遇到某些会话为空的情况,CONTEXT_INFO因此看起来您确实在某处有一个对象服务器,但未配置为为其会话设置上下文信息。
如果仔细查看结果,您将看到两个空行具有相同的主机进程 ID,并且该进程 ID 不返回 context_info 的任何行。
根据sys.dm_exec_sessions 的文档,这host_process_id是客户端应用程序的进程 ID。
发起会话的客户端程序的进程 ID。对于内部会话,该值为 NULL。可以为空。
我认为正在发生的情况是,您在此服务器上有多个 AX 环境,或者您有多个 AOS 实例,其中一个实例未根据您链接的文章进行配置。
例如,我在一台计算机上设置了几个实例,连接到 SQL Server,并且在查询 SQL Server 时,对于我没有配置它的实例,sys.dm_exec_sessions它CONTEXT_INFO是空白的,对于我配置的实例,它永远不会是空白正确配置。
在 SQL Server 上的会话中显示:
但是,由于我只配置了一个实例,如果我查看上下文信息查询,我会得到这个结果(带有一堆空格)
我的结论是,您可能在某个地方有一个实例,该注册表配置未正确激活。
| 归档时间: |
|
| 查看次数: |
1553 次 |
| 最近记录: |