Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

În mod implicit, Service Pack 1 pentru SQL Server 2014 și Service Pack 3 pentru SQL Server 2012 includ această remediere și nu trebuie să adăugați orice Semnalizatoarele de urmărire pentru a activa remedierea. Pentru a activa remedierea după ce instalați una dintre actualizările cumulative din secțiunea rezolvare, trebuie să porniți Microsoft SQL Server prin adăugarea semnalizatorul de urmărire 1236 la parametrii de pornire.

Simptome

Să presupunem că executați o instanță a Microsoft SQL Server 2014, SQL Server 2012, SQL Server 2008 sau SQL Server 2008 R2 pe un computer care conține mai multe procesoare. Atunci când numărul de blocări (tip de resursă = bază de date) pentru o anumită bază de date depășește un prag, apar următoarele probleme de performanță:

  • Apar privilegiat valorile pentru LOCK_HASH spinlock ai.

    Notă Consultați secțiunea "Mai multe informații" pentru informații despre cum se monitorizează acest spinlock.

  • Interogări sau operațiuni care necesită date blochează dura mult timp pentru a fi terminată. De exemplu, este posibil să observați următoarele întârzieri de performanță:

    • Conectare SQL Server

    • Interogări server legat

    • sp_reset_connection

    • Tranzacții

Notă Pentru a găsi lista de blocări (tip de resursă = bază de date) pe un anumit bazei de date, consultați secțiunea "Mai multe informații". Valoarea de prag variază în funcție de mediu.

Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Verifica cele mai recente actualizări cumulative pentru SQL Server:


Informații despre remedierea rapidă
O remediere rapidă compatibilă este disponibilă de la Microsoft. Cu toate acestea, această remediere rapidă este destinată pentru a corecta doar problema descrisă în acest articol. Aplicați această remediere rapidă numai pentru sistemele care întâmpină această problemă anume.

Dacă remedierea rapidă este disponibilă pentru descărcare, există o secțiune "Descărcare disponibilă pentru remediere rapidă" în partea de sus a acestui articol din baza de cunoștințe. Dacă nu apare această secţiune, trimite o solicitare de la serviciul pentru clienți Microsoft de asistență pentru a obţine remedierea rapidă.

Notă Dacă apar probleme suplimentare sau este necesară depanarea, poate fi necesar să creați o solicitare de asistenţă separată. Se vor aplica costurile uzuale de asistenţă pentru întrebări suplimentare de asistență și probleme care nu fac obiectul remedierii rapide în chestiune. Pentru o listă completă cu numerele de telefon ale clienților servicii și asistență Microsoft sau pentru a crea o solicitare de asistenţă separată, vizitați următorul site Web Microsoft:

http://support.microsoft.com/contactus/?ws=supportNotă Formularul "Descărcare disponibilă pentru remediere rapidă" afişează limbile pentru care este disponibilă remedierea rapidă. Dacă nu vedeți limba dvs., înseamnă că o remediere rapidă nu este disponibilă pentru respectiva limbă.

Stare

Microsoft a confirmat că aceasta este o problemă cu produsele Microsoft enumerate în secţiunea „Se aplică la".

Mai multe informații

Atunci când o aplicație o conexiune la SQL Server, se stabileşte mai întâi context o bază de date. În mod implicit, conexiunea va încerca să obțină o blocare de bază de date în modul de SH. Blocare SH de date vor fi lansate atunci când conexiunea este oprit sau context bazei de date se modifică în timpul existenței de conexiune. Dacă aveți mai multe conexiuni activ care utilizează acelaşi context bazei de date, aveți multe blochează de tip bază de date de resurse pentru anumite date.

Pe computerul care are 16 sau mai multe procesoare, numai obiectele tabel utilizează o schemă de blocare partiționat. Cu toate acestea, nu sunt partiționate blochează bazei de date. De aceea, numărul de baze de date mai mare de blocări, mai este nevoie pentru SQL Server pentru a obține un lacăt în baza de date. Cele mai multe aplicaţii nu întâmpina probleme provocate de acest design. Dar imediat după numărul depășește un prag, activități suplimentare și ora este necesar pentru a obține ecranul de blocare. Deși costul este numai micro secunde pentru fiecare suplimentare de blocare, timpul total poate creşte rapid, deoarece blocare hash Bucketuri protejate prin utilizarea unui spinlock. Acest lucru provoacă suplimentare CPU cicluri și așteaptă ca lucrători suplimentare pentru a obține ecranul de blocare.

Această remediere rapidă introduce date blocare partiționarea atunci când este activată semnalizarea de urmărire T1236 la pornire. Partiționarea blocare de bază de date păstrează adâncimea din lista de blocare gestionat în fiecare partiție locală. Aceasta optimizează semnificativ calea de acces care este utilizat pentru a obține o blocare de bază de date .

Pentru a monitoriza spinlock LOCK_HASH , se poate utiliza următoarea interogare.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 = 1
WHILE @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
END
SELECT * FROM #spinlock_stats ORDER BY [CaptureTime]
DROP TABLE #spinlock_stats
Pentru mai multe informații despre diagnosticarea și rezolvarea spinlock probleme privind împărțirea pe SQL Server, mergeți la următorul document:

Diagnosticarea și rezolvarea Spinlock probleme privind împărțirea pe SQL ServerNotă Deși acest document este scris pentru SQL Server 2008 R2, informațiile se aplică în continuare la SQL Server 2012.

Referințe

Pentru mai multe informații despre Semnalizatoarele de urmărire în SQL Server 2012, mergeţi la următorul site web TechNet:

Informații despre Semnalizatoarele de urmărire în SQL Server 2012
Pentru mai multe informații despre cum să găsiți numărul de baze de date blochează în utilizator pe bază de date, utilizați următoarea interogare pentru a calcula această valoare: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


Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×