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 に答える