【问题标题】:sqlstateserver appid vb.netsqlstateserver appid vb.net
【发布时间】:2014-02-03 15:33:21
【问题描述】:

我试图弄清楚如何获取和分离 sql​​server 为 stateserver 返回的 appid 和 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 但如果我运行十六进制转换函数,它会在负号上出现错误或使用在线转换器给我错误的值。我怎样才能得到那个值,我想查询会话值

我在这里缺少什么.. 看起来很简单

【问题讨论】:

  • 我猜它实际上是 appname 而不是转换为值的 appid。仍然不知道它是如何转换的
  • 看看这个问题 - 它可能会有所帮助。 stackoverflow.com/questions/3604603/…
  • 你试过 CONVERT 功能了吗? select convert(int, convert(varbinary, '0x9fa38ee5', 1))

标签: sql-server vb.net session


【解决方案1】:

你可以使用

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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多