2012-02-10 103 views
1

我們使用sql server來存儲asp.net的會話,當我查看ASPState數據庫中的ASPStateTempSessions表時,它是空的,我想知道,這個表中的記錄是否被刪除會話已過期?何時將記錄刪除?sql中的ASP.NET會話狀態

回答

3

的InstallSqlState.sql腳本創建一個名爲 ASPState_Job_DeleteExpiredSessions從 tempdb中刪除過期會議的工作。回想一下ASP.NET不會無限期地保持會話資源 。爲了在SQL Server用於維護狀態時支持此功能,必須運行SQL Server代理,以便根據需要運行 過期會話刪除作業。默認情況下,作業是 計劃每分鐘運行一次。它會以小於當前時間的 Expires值刪除會話狀態行。 運行SQL Server代理的帳戶必須有權執行 DeleteExpiredSessions存儲過程。

請參閱this one

+0

查看***有關'DeleteExpiredSessions'存儲過程的性能問題***:https://sqlperformance.com/2013/01/t-sql-queries/optimize-aspstate – Kiquenet 2016-10-27 13:51:55

0

它被重新命名爲dbo.DeleteExpiredSessions現在。

如果您沒有SQL Server代理,只需從命令行運行即可。

sqlcmd -S MyServerName -d MyStateDbName -E -Q "DeleteExpiredSessions" 

另外,如果刪除大量數據,則可能需要執行DBCC縮減。