S’applique à
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Microsoft distribue les correctifs microsoft SQL Server 2012 dans un fichier téléchargeable. Étant donné que les correctifs sont cumulatifs, chaque nouvelle version contient tous les correctifs logiciels et toutes les mises à jour de sécurité incluses dans la version précédente de la mise à jour SQL Server 2012.

Symptômes

Prenons l’exemple du scénario suivant :

  • Vous créez une procédure stockée qui utilise un paramètre table (TVP) dans Microsoft SQL Server 2012.

  • Vous utilisez SQL Profiler ou SQL Server événements étendus pour capturer les événements RPC :Starting et RPC :Completed.

  • Vous exécutez une requête qui utilise le TVP.

  • La requête expire.

Dans ce scénario, une erreur de planificateur sans rendement se produit et les requêtes qui s’exécutent sur le même planificateur s’exécutent lentement. En outre, un fichier de mini-vidage est généré dans le dossier de journal SQL Server.Lorsque ce problème se produit, vous recevez un message d’erreur semblable au suivant :

System.Data.SqlClient.SqlException (0x80131904) : Délai expiré. Le délai d'expiration s'est produit avant la fin de l'opération ou le serveur ne répond pas.sur System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)à System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, Erreur UInt32)sur System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)à l’adresse System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()sur System.Data.SqlClient.TdsParserStateObject.ReadByte()at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)sur System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)sur System.Data.SqlClient.SqlCommand.ExecuteNonQuery()at TVPApp.Program.Main(String[] args)

L’erreur du planificateur sans rendement, ainsi qu’un message d’erreur semblable au suivant, sont enregistrés dans le journal des erreurs SQL Server :

<Date><Heure> Server à l’aide de « dbghelp.dll » version « 4.0.5 »<Date><Heure> Serveur ***Impossible d’obtenir le contexte de thread pour spid #<Date><Heure> Serveur * *******************************************************************************><2 ******************************************************************************* ******************************************************************************* Date><Heure> Server *><6 Date><Heure> Serveur * BEGIN STACK DUMP :><0 Date><Heure> Serveur * <Date><Heure> spid #><8 Date><Heure> Serveur *><2 Date><Time> Server * Non-yield Scheduler><6 Date><Time> Server *<Date><Time> Server * *******************************************************************************<Date><Time> Server Stack Signature for the dump is 0x000000000000002C<Date><Time> Server External dump process 0x20000001.Le processus de vidage externe n’a renvoyé aucune erreur.<La date><heure> Le processus serveur 0:0:0 (0x1670) 0x0000000004EDE160 worker semble ne pas avoir de rendement sur le Planificateur 5. Heure de création du thread : 13014210386757. Processeur environ thread utilisé : noyau 0 ms, utilisateur 70106 ms. Utilisation des processus 16 %. Système inactif 77 %. Intervalle : 70140 ms.<La date><heure> Le processus serveur 0:0:0 (0x1670) 0x0000000004EDE160 worker semble ne pas avoir de rendement sur le Planificateur 5. Heure de création du thread :

Cause

Ce problème se produit en raison d’une erreur dans SQL Server moteur de base de données 2012. Les colonnes de texte dans le TVP sont implémentées en tant que chaînes d’insertion ou mémoires tampons, et une augmentation du nombre de lignes augmente le nombre de mémoires tampons. Toutefois, le processus qui libère les mémoires tampons prend beaucoup de temps. Par conséquent, une erreur du planificateur sans rendement est générée lorsque des opérations de mise en production et de réduction se produisent. Remarque Un problème similaire a été résolu dans l’article suivant de la Base de connaissances Microsoft. Toutefois, le package de mise à jour cumulative décrit dans l’article ne concerne pas un problème de délai d’attente de requête.

2520808 CORRECTIF : Erreur du planificateur sans rendement lorsque vous exécutez une requête qui utilise un programme de distribution de données dans SQL Server 2008 ou dans SQL Server 2008 R2 si SQL Profiler ou SQL Server événements étendus sont utilisés

Résolution

Informations sur les mises à jour cumulatives

Package de mise à jour cumulative 5 pour SQL Server Service Pack 1 (SP1) 2012

Le correctif pour ce problème a été publié pour la première fois dans la mise à jour cumulative 5. Pour plus d’informations sur l’obtention de ce package de mise à jour cumulative pour SQL Server 2012, cliquez sur le numéro d’article suivant pour afficher l’article dans la Base de connaissances Microsoft :

2861107 Package de mise à jour cumulative 5 pour SQL Server 2012Note Étant donné que les builds sont cumulatives, chaque nouvelle version de correctif contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2012. Nous vous recommandons d’appliquer la version la plus récente du correctif qui contient ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :

2772858 Les builds SQL Server 2012 qui ont été publiées après SQL Server 2012 Service Pack 1 a été publié

Solution de contournement 

Pour contourner ce problème, appliquez l'une des méthodes suivantes :

  • N’utilisez pas SQL Profiler ou SQL Server événements étendus.

  • Cliquez pour effacer les zones de case activée RPC :Starting et RPC :Completed dans la définition de trace.

État

Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.