Applies ToSQL 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, Service Pack 1 for SQL Server-2014 og Service Pack 3 for SQL Server 2012 inneholder denne hurtigreparasjonen, og du trenger ikke å legge til sporing flagg for å aktivere hurtigreparasjonen. Hvis du vil aktivere hurtigreparasjonen når du har installert en av de kumulative oppdateringene i delen løsning, må du starte Microsoft SQL Server ved å legge til sporingsflagg 1236 oppstartsparameterne.

Symptomer

Anta at du kjører en forekomst av Microsoft SQL Server-2014, SQL Server 2012, SQL Server 2008 eller SQL Server 2008 R2 på en datamaskin som inneholder mange prosessorer. Når antall låser (ressurstype = DATABASE) for en bestemt database overstiger en viss grense, kan du oppleve følgende ytelsesproblemer:

  • Utvidede verdiene inntreffer for LOCK_HASH spinlock antall.Obs! Se delen "Mer informasjon" for informasjon om hvordan du overvåker denne spinlock.

  • Spørringer eller operasjoner som krever databaselåsene ta lang tid å fullføre. For eksempel kan det hende følgende forsinkelsene ytelse:

    • SQL Server-pålogging

    • Koblet server-spørringer

    • sp_reset_connection

    • Transaksjoner

Obs! Å finne listen over låser (ressurstype = DATABASE) på en gitt database, se delen "Mer informasjon". Terskelverdien varierer fra miljø.

Hver nye kumulative oppdateringen for SQL Server inneholder alle hurtigreparasjonene og alle sikkerhetsreparasjoner som fulgte med den forrige kumulative oppdateringen. Sjekk ut de nyeste kumulative oppdateringene for SQL Server:

Informasjon om hurtigreparasjonEn støttet hurtigreparasjon er tilgjengelig fra Microsoft. Denne hurtigreparasjonen er imidlertid ment å løse problemet som er beskrevet i denne artikkelen. Bruk denne hurtigreparasjonen bare på systemer som har dette bestemte problemet.Hvis hurtigreparasjonen er tilgjengelig for nedlasting, finnes delen "Hotfix Download-Available" øverst i denne Knowledge Base-artikkelen. Hvis denne delen ikke vises, kan du sende en forespørsel til Microsofts kundeservice og kundestøtte for å få hurtigreparasjonen.Obs! Hvis det oppstår flere problemer, eller hvis feilsøkingstips, må du kanskje opprette en separat forespørsel om. Vanlige kundestøttekostnader gjelder for ytterligere kundestøttespørsmål og problemer som ikke dekkes av denne oppdateringen. For en fullstendig liste over telefonnumre for Microsofts kundeservice og kundestøtte eller opprette en separat forespørsel om, kan du gå til følgende Microsoft-webområde:

http://support.microsoft.com/contactus/?ws=supportObs! "Hotfix Download-Available" skjemaet viser språk hurtigreparasjonen er tilgjengelig. Hvis du ikke ser språket ditt, er det fordi en hurtigreparasjon ikke er tilgjengelig for dette språket.

Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Hvis du vil ha mer informasjon

Når et program foretar en tilkobling til SQL Server, kan det først oppretter en database-kontekst. Som standard prøver tilkoblingen å skaffe låsen på TJENESTEDATABASEN i SP-modus. SH databaselås vil bli utgitt når tilkoblingen er stoppet eller kontekst database endres i løpet av levetiden til tilkoblingen. Hvis du har mange aktive tilkoblinger som bruker den samme databasen konteksten, har du mange låser på ressursen databasetypen for databasen .På datamaskinen som har 16 eller flere CPU-bruk bare tabellobjekter et partisjonert Lås-oppsett. Databaselåsene er imidlertid ikke partisjonert. Derfor, jo større antall database låser, jo lengre tid tar det for SQL Server for å hente en lås på databasen. De fleste programmer ikke oppleve noen problemer som skyldes utformingen. Men som overskrider en viss grense, mer arbeid og tid er nødvendig for å få låsen. Selv om kostnaden er bare micro sekunder for hver ekstra Lås, kan den totale tiden raskt øke fordi Lås hash bøtter er beskyttet ved hjelp av en spinlock. Dette gjør at flere CPU-sykluser og venter på flere arbeidere å få låsen.Denne hurtigreparasjonen innfører DATABASEN lock partisjonering når sporingsflagg T1236 er aktivert ved oppstart. Partisjonering av DATABASE -Lås holder dybden på listen Lås håndterlig hver lokal partisjon. Dette optimaliserer tilgangsbane som brukes til å få en lås på DATABASEN betraktelig.Hvis du vil overvåke LOCK_HASH -spinlock, kan du bruke følgende spørring.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 Hvis du vil ha mer informasjon om å diagnostisere og løse spinlock kamp om ressursene på SQL Server, kan du gå til følgende dokument:

Diagnostisering og løsing av Spinlock kamp om ressursene på SQLServerObs! Selv om dette dokumentet er skrevet for SQL Server 2008 R2, er informasjonen fremdeles gjelder SQL Server 2012.

Referanser

Hvis du vil ha mer informasjon om sporing av flaggene i SQL Server 2012, kan du gå til følgende TechNet-webområde:

Informasjon om sporing av flaggene i SQL Server 2012 Hvis du vil ha mer informasjon om hvordan du finner nummeret på databaselåsene i bruker per database, kan du bruke følgende spørring til å beregne denne verdien: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

Trenger du mer hjelp?

Vil du ha flere alternativer?

Utforsk abonnementsfordeler, bla gjennom opplæringskurs, finn ut hvordan du sikrer enheten og mer.

Fellesskap hjelper deg med å stille og svare på spørsmål, gi tilbakemelding og høre fra eksperter med stor kunnskap.