Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Symptom
När du har aktiverat konfigurationsalternativet för vanliga villkorsefterlevnad i SQL Server kanske du ser en försämring av SQL Server-prestanda.
Vanliga villkorsefterlevnad
När du har aktiverat det vanliga villkorsefterlevnadsalternativet i SQL Server kan det uppstå låsvänte och vanliga granskningskostnader för efterlevnadskriterier när flera samtidiga autentiseringar använder samma inloggning.
När du har aktiverat det här alternativet kan prestanda försämras långsamt. Dessutom kan du se höga LCK_M_SCH_M väntetider i prestandastatistik.
LCK_M_SCH_M är ett schemaändringslås som förhindrar åtkomst till en tabell medan en DDL-åtgärd (Data Definition Language) inträffar. Du hittar också blockerade processposter där en LOGIN_STATS tabell i huvuddatabasen väntar länge. Den här tabellen används för att lagra inloggningsstatistik. När det finns många inloggningar och utloggningar kan det finnas konkurrens i den här tabellen.
Kör följande kommandon för att förstå varför en LCK_M_SCH_M väntehändelse inträffar:
CREATE EVENT SESSION [CreateDumpOnLCKMSCHM] ON SERVER
ADD EVENT sqlos.wait_info(
ACTION(package0.callstack,sqlserver.create_dump_all_threads)
WHERE (([opcode]=('Begin')) AND ([wait_type]=('LCK_M_SCH_M'))))
ADD TARGET package0.event_file(SET filename=N'CreateDumpOnLCKMSCHM',max_file_size=(128))
GO
ALTER EVENT SESSION [TestCreateDump] ON SERVER
STATE = START
GO
WHILE ((SELECT COUNT(1) FROM sys.dm_server_memory_dumps) < 5)
BEGIN
WAITFOR DELAY '00:00:00.100'
END
ALTER EVENT SESSION [CreateDumpOnLCKMSCHM] ON SERVER
STATE = STOP
När du aktiverar vanliga villkorsefterlevnad aktiveras också ett säkerhetsmått som kallas Residual Information Protection (RIP). RIP kräver att en minnesallokering skrivs över med ett känt bitmönster innan minnet omallokeras till en ny resurs. Så med många inloggningar och utloggningar finns det en prestandaförsämring i minnet eftersom det måste göras en överskrivning av minnesallokeringen.
Lösning
Om vanliga villkorsefterlevnad inte är ett strikt krav kan du överväga att inaktivera det för att minska granskningskostnaderna och förbättra prestandan. Om du vill inaktivera alternativet kör du följande kommandon:
sp_configure 'common criteria compliance enabled', 0
GO
RECONFIGURE
GO
När du har ändrat konfigurationen startar du om SQL Server-tjänsterna så att ändringarna börjar gälla.