【发布时间】:2012-03-02 16:38:08
【问题描述】:
我们使用sql server来存储asp.net的会话,当我查看ASPState数据库中的ASPStateTempSessions表时,它是空的,我想知道,一旦会话过期,这个表中的记录会被删除吗?什么时候会在那里删除记录?
【问题讨论】:
我们使用sql server来存储asp.net的会话,当我查看ASPState数据库中的ASPStateTempSessions表时,它是空的,我想知道,一旦会话过期,这个表中的记录会被删除吗?什么时候会在那里删除记录?
【问题讨论】:
InstallSqlState.sql 脚本创建一个名为 ASPState_Job_DeleteExpiredSessions 删除过期会话 临时数据库。回想一下,ASP.NET 不会使会话资源保持活动状态 无限期地。在使用 SQL Server 时支持此功能 保持状态,SQL Server 代理必须正在运行,以便 过期会话删除作业根据需要运行。默认情况下,作业是 计划每分钟运行一次。它删除会话状态行 过期值小于当前时间。账户所在的账户 SQL Server 代理运行必须有权限执行 DeleteExpiredSessions 存储过程。
请参考this one
【讨论】:
DeleteExpiredSessions存储过程:sqlperformance.com/2013/01/t-sql-queries/optimize-aspstate
现在已重命名为 dbo.DeleteExpiredSessions。
如果您没有 SQL Server 代理,只需从命令行运行它即可。
sqlcmd -S MyServerName -d MyStateDbName -E -Q "DeleteExpiredSessions"
此外,如果您要删除大量数据,您可能需要进行 DBCC 收缩。
【讨论】: