Obje araDBA.usp_LocalUser_RecordLogin
Demo modu

DBA.usp_LocalUser_RecordLogin

yordam

DB-12 · değişiklik 9.10.2026 · Obje aramaya dön

İfadeler

6 ifade · 180 çalışma · toplam 0,0 sn
Sorgu (query_hash)ÇalışmaOrt. süre (ms) Ort. CPU (ms)Ort. okumaSüredeki pay
0xF60C3F74BB2E8D0F 36 0,4 0,3 6 %50,3
0xF15469EEC4016788 30 0,2 0,2 2 %17,9
0x5B8965F47F18BF7F 72 0,1 0,1 2 %13,2
0x570A51D30141CEB3 5 0,6 0,4 4 %10,9
0x1D0FDE123C03641F 26 0,1 0,1 2 %4,8
0x47CCB791606F1C89 11 0,1 0,1 2 %3

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-12.test_LocalUsers.test basarili giris sayaci sifirlar ve son giris yazar · aynı veritabanı test_LocalUsers.test basarisi…DB-12.test_LocalUsers.test basarisiz denemeler esikte kilitler ve sayaci sifirlar · aynı veritabanı DBA.fn_NowDB-12.DBA.fn_Now · aynı veritabanı DBA.LocalUserDB-12.DBA.LocalUser · aynı veritabanı DBA.LocalUserLogDB-12.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.