SQLサーバーに格納されているASP.NETセッションを使い始めました。しかし、アプリケーションプール全体でセッションが最後になるので、新しいコードを配備すると、これが問題になる可能性があります。このモデルですべてのセッション(またはアプリケーションプールの少なくともすべてのセッション)を強制的に破棄する方法(SQLサーバーを再起動する方法以外)がありますか?SQL Serverに格納されたASP.NETセッションをどのようにリサイクルできますか?
答えて
のASPStateデータベース内のストアドプロシージャとしてこれを追加します。
CREATE PROCEDURE [dbo].[DeleteExpiredSessions]
AS
DECLARE @now datetime
SET @now = GETUTCDATE()
DELETE [ASPState].dbo.ASPStateTempSessions
WHERE Expires < @now
RETURN 0
は、その後、一定の間隔で実行されるSQL Serverエージェントにジョブを追加(鉱山が深夜に実行されます)その上で、次のステップを実行していますデータベース:
dbo.DeleteExpiredSessions
セッションが期限切れになるとき、彼らはそれらを作成したプロセスが周りにいない場合でも、離れて行くを確認します。
DELETE [ASPState].dbo.ASPStatsTempSessions
これで、データベース内のすべてのセッションが削除されます。これにより、プロセスの再起動時にすべてを取り除くことができます。
@RobertBeaubienは、これを処理するDeleteExpiredSessionsプロシージャを記述しています。この手順は、セッションストアデータベースの作成時に、aspnet_regsqlツールを使用してデータベースにすでに作成されている必要があります。 60秒ごとにSQLエージェントジョブを呼び出す必要があります。これは誤って無効にされている可能性があります。手順の説明については
CREATE PROCEDURE dbo.DeleteExpiredSessions
AS
SET NOCOUNT ON
SET DEADLOCK_PRIORITY LOW
DECLARE @now datetime
SET @now = GETUTCDATE()
CREATE TABLE #tblExpiredSessions
(
SessionID nvarchar(88) NOT NULL PRIMARY KEY
)
INSERT #tblExpiredSessions (SessionID)
SELECT SessionID
FROM [ASPState].dbo.ASPStateTempSessions WITH (READUNCOMMITTED)
WHERE Expires < @now
IF @@ROWCOUNT <> 0
BEGIN
DECLARE ExpiredSessionCursor CURSOR LOCAL FORWARD_ONLY READ_ONLY
FOR SELECT SessionID FROM #tblExpiredSessions
DECLARE @SessionID nvarchar(88)
OPEN ExpiredSessionCursor
FETCH NEXT FROM ExpiredSessionCursor INTO @SessionID
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE FROM [ASPState].dbo.ASPStateTempSessions WHERE
SessionID = @SessionID AND Expires < @now
FETCH NEXT FROM ExpiredSessionCursor INTO @SessionID
END
CLOSE ExpiredSessionCursor
DEALLOCATE ExpiredSessionCursor
END
DROP TABLE #tblExpiredSessions
RETURN 0
GO
手順のASP.NET 4.0のバージョンは、次のようになります。
関連するストアドプロシージャと、SQL Serverセッション状態プロバイダの背後にある方法については、this MSDN articleで説明しています。
パフォーマンス上の理由から、可能であれば、カーソルから離しておくことをお勧めします。 私の代わりにマージ使用DeleteExpiredSessions
ストアドプロシージャを書き直し:SQL ServerののASPStateで最高のパターンとプラクティスです
CREATE PROCEDURE dbo.DeleteExpiredSessions
AS
SET NOCOUNT ON
SET DEADLOCK_PRIORITY LOW
DECLARE @now datetime
SET @now = GETUTCDATE()
CREATE TABLE #tblExpiredSessions
(
SessionID nvarchar(88) NOT NULL PRIMARY KEY
)
INSERT #tblExpiredSessions (SessionID)
SELECT SessionID
FROM dbo.ASPStateTempSessions WITH (NOLOCK)
WHERE Expires < @now
MERGE dbo.ASPStateTempSessions AS [target]
USING #tblExpiredSessions AS [source]
ON ([target].[SessionID] = [source].[SessionID] AND Expires < @now)
WHEN MATCHED
THEN DELETE;
DROP TABLE #tblExpiredSessions
RETURN 0
GO
** SQL ServerのASPState?セッションを削除しましたか?** _ASPStateデータベースのロックと拡張の問題_ http://dba.stackexchange.com/questions/30445/aspstate-database-locking-and-growth-problems – Kiquenet
- 1. ASP.NET MVC 3 - セッションに格納されたLinqからSQLオブジェクトへ
- 2. nvarchar(n)はSQL Serverにどのように格納されていますか?
- 3. ASP.NETチェックボックスの値をSQL Serverに格納
- 4. C#:任意のオブジェクトをSQL Serverにどのように格納しますか?
- 5. SQL Server動的テーブルデータベースに格納されたフィールド名から
- 6. SQL ServerセッションまたはセッションIDを殺すためにどのように
- 7. SQL Serverにストアドプロシージャを格納します。
- 8. ASP.NET CommandName値とCommandArgument値はどのように格納されますか?
- 9. データメンバはオブジェクトにどのように格納されますか?
- 10. 削除配列は、SQL Serverの列に格納された
- 11. SQL Server 2008はどこにインストールログを格納しますか?
- 12. ASP.netセッション変数に格納されるデータの最大量
- 13. lpCmdLineはどのように格納されていますか?
- 14. C#でSQL Server 2005にプログラムでWordファイルを格納するにはどうすればよいですか?
- 15. 変数はSQLサーバーにどこに格納されますか?
- 16. SQL ServerのXML列に格納されたXMLを更新します。
- 17. IsPostBackプロパティはどこに格納されていますか? asp.net
- 18. セッションに格納されているASP.NET、スレッド、接続文字列
- 19. イメージボックスにasp.net WebFormにSQL Serverで格納されたPDFのbtye配列を表示する方法?
- 20. HibernateのSQLExceptionConverterがSQL Serverプロシージャに格納されたエラーメッセージを変換しないようにするにはどうすればよいですか?
- 21. C#を使用してSQL Serverデータベースにハッシュを格納するにはどうすればよいですか?
- 22. SQL Serverに大量のデータを格納
- 23. は、SQL Serverテーブルに格納されたpowershellスクリプトを実行します
- 24. SQL Server:移植性のためにデータベースを格納します
- 25. SQL ServerでVARBINARY(MAX)に格納されているファイル
- 26. SQLに格納された2Dデータ
- 27. SQL Serverに書式設定されたテキストを格納することはできますか?
- 28. エクスプレスフレームワークはどのように使用しますが、SQL Serverデータベースにユーザーデータを格納しますか?
- 29. SQL Serverのオプションのパラメータにprocが格納されていますか?
- 30. テーブルがSQL-Serverでどのように作成されたか
**?削除されたセッション?** _ASPStateデータベースのロックと拡張に関する問題_ http://dba.stackexchange.com/questions/30445/aspstate-database-locking-and-growth-problems – Kiquenet