Gäller för
SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2012 Express SQL Server 2012 Web SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2008 Service Pack 3 SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 R2 Service Pack 2 SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard

Som standard ingår denna korrigering Service Pack 1 för SQL Server 2014 och Service Pack 3 för SQL Server 2012 och du behöver inte lägga till några trace-flaggor om du vill aktivera korrigeringen. Om du vill aktivera snabbkorrigeringen efter installation av kumulativa uppdateringar i avsnittet lösning, måste du starta Microsoft SQL Server genom att lägga till spårningsflagga 1236 Startparametrar.

Symptom

Anta att du kör en instans av Microsoft SQL Server 2014, SQL Server 2012, SQL Server 2008 eller SQL Server 2008 R2 på en dator med flera processorer. När antalet lås (resurstyp = databas) för en viss databas överstiger ett visst tröskelvärde, uppstår följande prestandaproblem:

  • Förhöjda värden inträffar för LOCK_HASH spinlock antal.Obs! I avsnittet "Mer Information" finns information om hur du övervakar den här spinlock.

  • Frågor eller åtgärder som kräver databas Lås ta lång tid att slutföras. Till exempel finnas förskjutningar följande prestanda:

    • SQL Server-inloggning

    • Länkad server frågor

    • sp_reset_connection

    • Transaktioner

Obs! Leta upp listan med lås (resurstyp = databas) på en viss databas finns i avsnittet "Mer Information". Tröskelvärdet varierar beroende på miljö.

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Checka ut de senaste kumulativa uppdateringarna för SQL Server:

Information om snabbkorrigeringenEn snabbkorrigering är tillgänglig från Microsoft. Den här snabbkorrigeringen är emellertid avsedd att åtgärda det problem som beskrivs i denna artikel. Använd bara den här snabbkorrigeringen för system med just detta problem.Om snabbkorrigeringen är tillgänglig för hämtning finns "Snabbkorrigeringen tillgänglig för hämtning" överst i den här Knowledge Base-artikeln. Om det här avsnittet inte visas, skicka en begäran till Microsofts kundtjänst och Support för att få snabbkorrigeringen.Obs! Om det uppstår ytterligare problem eller krävs felsökning, kan du behöva skapa en serviceförfrågan. De vanliga supportkostnaderna gäller för övriga supportfrågor och problem som inte uppfyller kraven för den här snabbkorrigeringen. En fullständig lista över telefonnummer för Microsofts kundtjänst och Support eller skapa en serviceförfrågan finns på följande Microsoft-webbplats:

http://support.microsoft.com/contactus/?ws=supportObs! "Snabbkorrigering tillgänglig för hämtning" formuläret visar de språk som snabbkorrigeringen är tillgänglig på. Om ditt språk inte visas beror det på att ingen snabbkorrigering är tillgänglig för språket.

Status

Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller".

Mer Information

När ett program gör en anslutning till SQL Server, skapar först en databas kontext. Anslutningen görs ett försök att hämta ett lås för databasen i SH-läge som standard. Låset SH-databasen kommer att släppas när anslutningen har stoppats eller databaskontexten ändras under giltighetstiden för anslutningen. Om du har många aktiva anslutningar som använder samma databas kontext har du många Lås för resurstyp för databasen för den specifika databasen.På datorn som innehåller 16 eller fler processorer, Använd bara tabellobjekt ett partitionerat Lås system. Lås för databasen är inte partitionerats. Därför större antal databas låser, desto längre tid tar det för SQL Server för att hämta ett lås i databasen. De flesta program uppstår inte de problem som orsakas av den här designen. Men så snart antalet överstiger ett visst tröskelvärde, mer arbete och tid krävs för att få låset. Men kostnaden är endast micro sekunder för varje ytterligare lås, öka den totala tiden snabbt eftersom Lås hash buckets skyddas med hjälp av en spinlock. Detta medför att ytterligare CPU-cykler och väntar ytterligare arbetstagare att få låset.Med denna snabbkorrigering införs Lås Databaspartitionering när spårningsflagga T1236 aktiveras vid start . Partitionering databas Lås behåller djupet i listan Lås hanterbar i varje lokal partition. Detta optimerar betydligt åtkomstsökväg som används för att hämta ett lås för databasen .Du kan använda följande fråga om du vill övervaka LOCK_HASH spinlock.SET NOCOUNT ONCREATE TABLE #spinlock_stats([CaptureTime] datetime,[name] nvarchar(512),[collisions] bigint,[spins] bigint,[spins_per_collision] real,[sleep_time] bigint,[backoffs] int)DECLARE @counter int = 1WHILE @counter < 100 BEGIN INSERT INTO #spinlock_stats SELECT GETDATE() as "CaptureTime" , * FROM sys.dm_os_spinlock_stats WHERE [name] = 'LOCK_HASH' WAITFOR DELAY '00:00:05' SET @counter +=1 ENDSELECT * FROM #spinlock_stats ORDER BY [CaptureTime]DROP TABLE #spinlock_stats Mer information om att diagnostisera och lösa spinlock konkurrens på SQL Server finns i följande dokument:

Diagnostisera och lösa Spinlock konkurrens på SQLServerObs! Även om det här dokumentet är skrivet för SQL Server 2008 R2, är informationen fortfarande gäller för SQL Server 2012.

Referenser

Mer information om trace-flaggor i SQL Server 2012 finns i följande TechNet-webbplats:

Information om trace-flaggor i SQL Server 2012 Mer information om hur du tar reda på antalet lås i databasen i användare per databas följande fråga användas för att beräkna detta värde:select Resource_database_id, resource_type, request_mode, request_status, count (*) 'LockCount' from sys.dm_tran_locks group by Resource_database_id, resource_type, request_mode, request_status

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.