sqlstateserver appid vb.net

时间:2014-02-03 15:33:22

标签: sql-server vb.net session

我试图找出如何获取和分离appid和sqlserver为stateserver返回的sessionid。我需要在我的webapp中获取此信息,除了阅读信息之外,我无法访问sqlserver。

文档中的

:奇怪的是,ASPStateTempSessions表缺少将其链接到ASPTempStateApplications的AppId列。链接发生在ASPStateTempSessions的SessionId字段中,该字段不存储会话ID。它存储会话ID,并附加应用程序ID。声明

cmd.Parameters[0].Value = id + _partitionInfo.AppSuffix

所以我在AspStateTempApplications表中有这个值:

    appid            appname
    -796116323     /w3svc/*/root/fsco*tbsc 

我已在会话表中确定了我的会话信息与appid转换?

sessionid
cp5p2trw5navwnsgmhdzctnn2341447f 

后面的部分:2341447f应该对应-796116323,但是如果我运行十六进制转换函数,它在负号上使用barfs或使用在线转换器给我错误的值。我怎样才能获得该值,我想查询会话值

我在这里错过了什么......看起来很简单

1 个答案:

答案 0 :(得分:0)

您可以使用

SUBSTRING(a.SessionId, 25, 8) AS AppIDHex, 

并将AppId转换为HEX

SUBSTRING(sys.fn_varbintohexstr(CONVERT(VarBinary,b.AppId)), 3, 8) 

SQL代码:

  SELECT 
    a.SessionId, 
    SUBSTRING(a.SessionId, 25, 8) AS AppIDHex, 
    b.AppId AS AppIDDec, 
    b.AppName, 
    DATALENGTH(a.SessionItemLong) AS SessionSize 
FROM 
    dbo.ASPStateTempSessions AS a 
    LEFT OUTER JOIN 
    dbo.ASPStateTempApplications AS b 
    ON 
    SUBSTRING(a.SessionId, 25, 8) = 
    SUBSTRING(sys.fn_varbintohexstr(CONVERT(VarBinary,b.AppId)), 3, 8) 

https://blogs.msdn.microsoft.com/rextang/2008/01/12/asp-net-checking-session-size-in-sql-server-aspstate-db/