Obje araDBA.usp_LocalUser_RecordLogin
Demo modu

DBA.usp_LocalUser_RecordLogin

yordam

DB-11 · değişiklik 11.10.2026 · Obje aramaya dön

İfadeler

5 ifade · 2.260 çalışma · toplam 0,2 sn
Sorgu (query_hash)ÇalışmaOrt. süre (ms) Ort. CPU (ms)Ort. okumaSüredeki pay
0x570A51D30141CEB3 378 0,3 0,3 12 %52
0x5B8965F47F18BF7F 998 0,0 0,0 2 %17,8
0x1D0FDE123C03641F 506 0,1 0,1 2 %16,4
0x47CCB791606F1C89 252 0,1 0,1 2 %8,8
0xF96E292AC0C0F6CF 126 0,1 0,1 2 %5

Bağımlılıklar

Doğrudan referanslar (sys.sql_expression_dependencies); dinamik SQL ve geç bağlanan adlar görünmeyebilir.
DBA.usp_LocalUser_RecordLoginDBA.usp_LocalUser_RecordLogin test_LocalUsers.test basarili…DB-11.test_LocalUsers.test basarili giris sayaci sifirlar ve son giris yazar · aynı veritabanı test_LocalUsers.test basarisi…DB-11.test_LocalUsers.test basarisiz denemeler esikte kilitler ve sayaci sifirlar · aynı veritabanı DBA.fn_NowDB-11.DBA.fn_Now · aynı veritabanı DBA.LocalUserDB-11.DBA.LocalUser · aynı veritabanı DBA.LocalUserLogDB-11.DBA.LocalUserLog · aynı veritabanıKullananlar Kullandıkları
aynı veritabanıbaşka veritabanılinked server
YönNesneTürKapsam
kullanıyor DBA.fn_Now fonksiyon aynı veritabanı
kullanıyor DBA.LocalUser tablo aynı veritabanı
kullanıyor DBA.LocalUserLog tablo aynı veritabanı
kullanan test_LocalUsers.test basarili giris sayaci sifirlar ve son giris yazar yordam aynı veritabanı
kullanan test_LocalUsers.test basarisiz denemeler esikte kilitler ve sayaci sifirlar yordam aynı veritabanı
Tanım
-- Giriş denemesinin sonucu, atomik. Başarısızlık sayacı @MaxFailures'a ulaşınca @LockoutMinutes kilit (Lockout logu).
-- Başarı sayacı sıfırlar. Kilitliyken gelen deneme sayılmaz, kilidi uzatmaz.
CREATE   PROCEDURE DBA.usp_LocalUser_RecordLogin
    @UserID int, @Success bit, @MaxFailures int, @LockoutMinutes int
AS
BEGIN
    SET NOCOUNT, XACT_ABORT ON;
    BEGIN TRAN;
    DECLARE @now datetime2(0) = DBA.fn_Now(), @name nvarchar(64), @failed int, @lockEnd datetime2(0);
    SELECT @name = UserName, @failed = FailedCount, @lockEnd = LockoutEndUtc
    FROM DBA.LocalUser WITH (UPDLOCK, HOLDLOCK) WHERE UserID = @UserID;
    IF @name IS NOT NULL AND (@lockEnd IS NULL OR @lockEnd <= @now)
    BEGIN
        IF @Success = 1
        BEGIN
            UPDATE DBA.LocalUser SET FailedCount = 0, LockoutEndUtc = NULL, LastLoginUtc = @now WHERE UserID = @UserID;
            INSERT DBA.LocalUserLog (Action, UserName, ChangedBy) VALUES ('Login', @name, @name);
        END
        ELSE IF @failed + 1 >= @MaxFailures
        BEGIN
            UPDATE DBA.LocalUser SET FailedCount = 0, LockoutEndUtc = DATEADD(MINUTE, @LockoutMinutes, @now) WHERE UserID = @UserID;
            INSERT DBA.LocalUserLog (Action, UserName, ChangedBy) VALUES ('Lockout', @name, N'system');
        END
        ELSE UPDATE DBA.LocalUser SET FailedCount = @failed + 1 WHERE UserID = @UserID;
    END
    COMMIT;
END;

Bu nesnenin analizleri

Kayıt yok

Bu nesne için analiz yok.