6

最近我Session State在我的项目中创建,代码如下

<sessionState mode="SQLServer" allowCustomSqlDatabase="true" 
    sqlConnectionString="Data Source=ADMIN-9F8C57749\SQLEXPRESS;Initial 
    Catalog=kecbliss;Integrated Security=True" timeout="60" 
    stateNetworkTimeout="60">
</sessionState>

问题是一天比一天aspstatetempsessions table大,所以我的问题是

  1. 我可以从 aspstatetempsessions 中删除前几天的记录吗?
  2. 如何在不影响项目的情况下实现这一点?

项目详情

前端ASP.NET
后端MS SQL Server

4

1 回答 1

9

要解决此问题:

步骤1:

确保 SQL 代理服务正在运行,并检查名为SSPdatabaseName _Job_DeleteExpiredSessions 的 SQL 代理作业是否存在并成功运行。

如果您已启动 SQL 代理服务并且缺少 SQL 代理作业,请继续执行步骤 2

第2步:

在 SSP 数据库上手动运行 DeleteExpiredSessions 存储过程。

  • 使用 Microsoft SSMS --> Client on New query 连接到数据库服务器。
  • 确保您已在新查询窗口中选择了 SSP 数据库。
  • 输入“EXEC DeleteExpiredSessions”并执行查询。

此命令将清理 ASPStateTempSessions 表并且不会删除任何活动连接。

注意:根据 ASPStateTempSessions 表的大小,建议在 SharePoint/SQL 服务器的非高峰时间运行此命令。

要注册将来自动运行的作业,请按照以下步骤操作:

  • 确保 SQL 代理已打开(它也应设置为自动启动 Windows 服务)
  • 获取包含缺少关联 SQL 代理作业的 ASPStateTempSessions 表的 SSP 数据库名称。
  • 在 WFE 或具有服务器场的任何应用程序服务器上执行以下命令:

从命令提示符转到 ASP .Net 文件夹 %WINDIR%\Microsoft.NET\Framework\v2.0.50727\

aspnet_regsql.exe -sqlexportonly exportfilepath.sql -ssadd -sstype c -d SSP db name 
  • 在记事本中打开 exportfilepath.sql 文件,确保选择以下行之间的文本:

/* 创建作业以删除过期会话 */

/ * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * *** /

  • 复制上面复制的测试并在托管 SSP 数据库的 SQL 框上执行代码。

现在您应该发现创建了一个 SQL 代理作业。

拉吉

来源:support.microsoft.com/kb/970788

于 2013-01-30T05:03:03.873 回答