Applies ToSQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Microsoft vertreibt Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) oder Microsoft SQL Server 2012-Fixes in einer herunterladbaren Datei. Da die Fixes kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die im vorherigen SQL Server 2008 R2 Service Pack 1 (SP1) oder Microsoft SQL Server 2012-Update veröffentlicht wurden.

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Sie installieren eine Instanz von Microsoft SQL Server 2008 R2 oder Microsoft SQL Server 2012 auf einem Computer.

  • Gleichzeitige Anweisungen, die wie folgt aussehen, werden in der Instanz ausgeführt:

    CREATE PROC p AS RETURN (
    query
    ); EXEC p;

    Oder Sie führen eine Abfrage aus, die den folgenden Code enthält:

    IF EXISTS(
    subquery
    );
  • Die CPU-Auslastung ist durchweg hoch, und die Arbeits Threads sind im ausführbaren Zustand.

  • Der Konflikt für die QUERY_EXEC_STATS Spinlock ist groß. Beispielsweise erhöhen sich die Anzahl der Drehungen, die möglichen Kollisionen und die Rückstandswerte für die QUERY_EXEC_STATS Spinlock schnell.Hinweis Weitere Informationen zum Überwachen der QUERY_EXEC_STATS -Spinlock finden Sie im Abschnitt "Weitere Informationen".

In diesem Szenario kann es zu einer langsamen Leistung kommen.

Ursache

Dieses Problem tritt auf, weil SQL Server 2008 R2 oder SQL Server 2012 einige Speicherstrukturen zu globalen Statistiken erstellt und zerstört, anstatt Sie zu Zwischenspeichern. Dies führt zu einem Leistungsengpass.

Fehlerbehebung

Informationen zum kumulativen Update

SQL Server 2012

Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Update 1 für SQL Server 2012 veröffentlicht. Wenn Sie weitere Informationen zu diesem kumulativen Updatepaket erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

2679368 Kumulatives Updatepaket 1 für SQL Server 2012Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Version von SQL Server 2012 behoben wurden. Microsoft empfiehlt, die neueste Fix-Version zu verwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:

2692828 Die SQL Server 2012-Builds, die nach der Veröffentlichung von SQL Server 2012 veröffentlicht wurden Sie müssen einen SQL Server 2012-Hotfix auf eine Installation von SQL Server 2012 anwenden.

Kumulatives Updatepaket 5 für SQL Server 2008 R2 SP1

Der Fix für dieses Problem wurde erstmals im kumulativen Update 5 veröffentlicht. Wenn Sie weitere Informationen zum beziehen dieses kumulativen Updatepakets für SQL Server 2008 R2 SP1 erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

2659694 Kumulatives Updatepaket 5 für SQL Server 2008 R2 SP1Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Version von SQL Server 2008 R2 SP1 enthalten waren. Wir empfehlen, dass Sie die neueste Fix-Version anwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:

2567616 Die SQL Server 2008 R2-Builds, die nach der Veröffentlichung von SQL Server 2008 R2 SP1 veröffentlicht wurden

Weitere Informationen

Um die QUERY_EXEC_STATS Spinlock zu überwachen, passen Sie die Verzögerung und die Anzahl der Iterationen entsprechend Ihrer Umgebung im folgenden Code an, und führen Sie Sie dann aus:

SET NOCOUNT ONCREATE TABLE #spins([Spinlock Name] varchar(50),Collisions numeric,Spins numeric,[Spins/Collision] float,[Sleep Time (ms)] numeric,Backoffs numeric, InsertTime datetime DEFAULT GETDATE())DECLARE @counter int = 1WHILE @counter < 10      BEGIN            INSERT INTO #spins ([Spinlock Name], Collisions, Spins, [Spins/Collision], [Sleep Time (ms)], Backoffs) EXECUTE ('DBCC SQLPERF (''SPINLOCKSTATS'') WITH NO_INFOMSGS')            WAITFOR DELAY '00:00:05'            SET @counter +=1      ENDSELECT * FROM #spins WHERE [Spinlock Name] = 'QUERY_EXEC_STATS' ORDER BY InsertTimeDROP TABLE #spins

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.