2014-02-03 3 views
0

Im пытается выяснить, как получить и отделить appid и sessionid, который возвращается сервером sqlserver для сервера состояний. Мне нужно получить эту информацию в моем webapp, и у меня нет доступа к sqlserver, кроме как для чтения информации.sqlstateserver appid vb.net

в документах: Любопытно, что в таблице ASPStateTempSessions отсутствует столбец AppId, связывающий его с ASPTempStateApplications. Связь происходит в поле SessionId ASPStateTempSessions, которое не хранит только идентификаторы сеанса. В нем хранятся идентификаторы сеансов с прикрепленными к ним идентификаторами приложений. Заявление

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

так что я это значение в таблице AspStateTempApplications:

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

я определил в таблице сеанса моей сессии Информация с AppID преобразованной?

sessionid 
cp5p2trw5navwnsgmhdzctnn2341447f 

часть на задней: 2341447f должен соответствовать -796116323, но если я запустить функцию шестнадцатеричное преобразовать его либо barfs на отрицательном знаке или с помощью онлайн-конвертеров дает мне неправильное значение. Как я могу получить это значение, я хотел бы запросить значения сессии

, что я здесь отсутствует .. это кажется простым

+0

я предполагаю, что его на самом деле APPNAME, а не AppID, который преобразуется в значение. еще не знаю, как его преобразование –

+0

проверить этот вопрос - он может помочь. http://stackoverflow.com/questions/3604603/ms-sql-server-convert-hex-string-to-integer –

+0

Вы пробовали с функцией *** CONVERT ***? 'select convert (int, convert (varbinary, '0x9fa38ee5', 1))' – Kiquenet

ответ

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/

Смежные вопросы