DBA.usp_LocalUser_RecordLogin
yordamDB-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ışma | Ort. süre (ms) | Ort. CPU (ms) | Ort. okuma | Sü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.aynı veritabanıbaşka veritabanılinked server
| Yön | Nesne | Tür | Kapsam |
|---|---|---|---|
| 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ı |
-- 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.