ASP.NET 2.0 ile geliştirilmiş DeleteExpiredSessions saklı yordamı

GİRİŞ

Microsoft ASP.NET 2.0 ile hem oturumların sayısını ve boyutunu ayrı ayrı oturumlar artırırsanız, silme süresi dolan oturumlar ASP.NET Web sitesinin genel performansı etkileyebilir. Microsoft SQL Server çalıştıran sunucu üzerinde oluşan tüm engelleme silme işini yürütürken, SQL Server oturum modunu kullanan ASP.NET istekleri olumsuz etkiler.

DeleteExpiredSessions depolanan yordamı için bir son gelişme performansı artırır ve engelleme azaltır. Bu geliştirme ASP.NET isteği yürütülmesini olumsuz etkisini en aza indirir. Bu geliştirme, ASP.NET sonraki sürümünde de uygulanacaktır.

Daha fazla bilgi

Saklı yordam yeni DeleteExpiredSessions kullanmak için şu adımları izleyin:


  1. SQL Server Management Studio konsolunu açın.

  2. Yeni Sorgu'ya tıklayın.

  3. Kalıcı olmayan bir SQL oturum durumu kullanırsanız, aşağıdaki komut dosyası sağ bölmesine yapıştırın.

    USE [ASPState]GO

    DECLARE @ver int
    EXEC dbo.GetMajorVersion @@ver=@ver OUTPUT
    DECLARE @cmd nchar(4000)
    IF (@ver >= 8)
    SET @cmd = N'
    ALTER 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 [tempdb].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 [tempdb].dbo.ASPStateTempSessions WHERE SessionId = @SessionId
    FETCH NEXT FROM ExpiredSessionCursor INTO @SessionId
    END

    CLOSE ExpiredSessionCursor

    DEALLOCATE ExpiredSessionCursor

    END

    DROP TABLE #tblExpiredSessions

    RETURN 0'
    ELSE
    SET @cmd = N'
    ALTER PROCEDURE dbo.DeleteExpiredSessions
    AS
    SET NOCOUNT ON
    SET DEADLOCK_PRIORITY LOW

    DECLARE @now datetime
    SET @now = GETDATE()

    CREATE TABLE #tblExpiredSessions
    (
    SessionId nvarchar(88) NOT NULL PRIMARY KEY
    )

    INSERT #tblExpiredSessions (SessionId)
    SELECT SessionId
    FROM [tempdb].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 [tempdb].dbo.ASPStateTempSessions WHERE SessionId = @SessionId
    FETCH NEXT FROM ExpiredSessionCursor INTO @SessionId
    END

    CLOSE ExpiredSessionCursor

    DEALLOCATE ExpiredSessionCursor

    END

    DROP TABLE #tblExpiredSessions

    RETURN 0'
    EXEC (@cmd)
    GO

    Bir SQL oturum durumunu sürekli kullanırsanız, aşağıdaki komut dosyası sağ bölmesine yapıştırın.

    USE [ASPState]GO

    DECLARE @ver int
    EXEC dbo.GetMajorVersion @@ver=@ver OUTPUT
    DECLARE @cmd nchar(4000)
    IF (@ver >= 8)
    SET @cmd = N'
    ALTER 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
    FETCH NEXT FROM ExpiredSessionCursor INTO @SessionId
    END

    CLOSE ExpiredSessionCursor

    DEALLOCATE ExpiredSessionCursor

    END

    DROP TABLE #tblExpiredSessions

    RETURN 0'
    ELSE
    SET @cmd = N'
    ALTER PROCEDURE dbo.DeleteExpiredSessions
    AS
    SET NOCOUNT ON
    SET DEADLOCK_PRIORITY LOW

    DECLARE @now datetime
    SET @now = GETDATE()

    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
    FETCH NEXT FROM ExpiredSessionCursor INTO @SessionId
    END

    CLOSE ExpiredSessionCursor

    DEALLOCATE ExpiredSessionCursor

    END

    DROP TABLE #tblExpiredSessions

    RETURN 0'
    EXEC (@cmd)
    GO
  4. Çalıştır' ı tıklatın.

Oturum durumu veritabanını kalıcı veya kalıcı olmayan SQL oturumu durumu olarak yapılandırılıp yapılandırılmadığını belirlemek için aşağıdaki özellikleri kullanın:

  • Kalıcı olmayan SQL oturumu durumu
    Oturum verilerini saklamak için tempdb veritabanında ASPStateTempApplications ile ASPStateTempSessions tablolarını oluşturulur.

  • Kalıcı SQL oturumu durumu
    Oturum verilerini saklamak için oturum durumu veritabanını aynı veritabanında ASPStateTempApplications ile ASPStateTempSessions tablolarını oluşturulabilir.



Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yardımcı oldu mu?

Geri bildiriminiz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×