Applies ToSQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

N° de bogue : 187868 (Maintenance du contenu)VSTS : 1340145

Microsoft distribue les correctifs de Microsoft SQL Server 2012 dans un fichier téléchargeable. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et les mises à jour de sécurité inclus dans la précédente 2012 de SQL Server mise à jour de version.

Symptômes

Considérez le 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 le Générateur de profils SQL ou des événements d’étendue de SQL Server pour capturer les RPC : démarrage et RPC : terminé événements.

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

  • La requête est arrivée à expiration.

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

(0x80131904) de System.Data.SqlClient.SqlException : Délai expiré. Le délai d’attente écoulée avant l’achèvement de l’opération ou le serveur ne répond pas.à System.Data.SqlClient.SqlInternalConnection.OnError (SqlException exception, Boolean breakConnection)at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()à System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, UInt32 erreur)à System.Data.SqlClient.TdsParserStateObject.ReadSni (asyncResult de DbAsyncResult, TdsParserStateObject stateObj)à System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()à System.Data.SqlClient.TdsParserStateObject.ReadByte()à System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)à System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)à System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)à System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, méthode de chaîne, le résultat de DbAsyncResult)à System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (résultat de la DbAsyncResult, String methodName, Boolean sendToPipe)à System.Data.SqlClient.SqlCommand.ExecuteNonQuery()à TVPApp.Program.Main (String [] args)

L’erreur de planificateur dalle avec un message d’erreur semblable au suivant est enregistré dans le journal des erreurs SQL Server :

< Date >< heure > serveur à l’aide de 'dbghelp.dll' version '4.0.5'< Date >< heure > serveur *** Impossible d’obtenir le contexte de thread pour le spid #<Date><Time> Server * *******************************************************************************< Date >< heure > Server *< Date >< heure > Server * début DUMP de la pile :Serveur de < date >< heure > * < Date >< heure > spid #< Date >< heure > Server *< Date >< heure > Server * dalle du planificateur< Date >< heure > Server *<Date><Time> Server * *******************************************************************************Signature de pile < date >< heure > serveur pour le vidage est 0x000000000000002CCode < date >< heure > serveur externe retour de processus de vidage 0 x 20000001.External dump process returned no errors.Processus de serveur < date >< heure > 0:0:0 (0x1670) 0x0000000004EDE160 de travail semble dalle sur 5 du planificateur. Heure de création de thread : 13014210386757. Environ Thread CPU utilisé (s) : noyau 0 ms, Mme de l’utilisateur 70106 l’utilisation des processus de 16 %. 77 % inactif du système. Intervalle : de ms 70140.Processus de serveur < date >< heure > 0:0:0 (0x1670) 0x0000000004EDE160 de travail semble dalle sur 5 du planificateur. Heure de création de thread :

Cause

Ce problème se produit en raison d’une erreur dans le moteur de base de données de SQL Server 2012. Les colonnes de texte dans la TVP sont implémentées comme insérer des chaînes ou des mémoires tampons et d’augmenter le nombre de lignes augmente le nombre de mémoires tampons. Toutefois, le processus qui libère la mémoire tampon est beaucoup de temps. Par conséquent, une erreur de planificateur dalle est générée lorsque la mise à jour et réduire les opérations de se produire.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écrite dans l’article n’est pas pour un problème de dépassement de délai de requête.

CORRIGER des 2520808 : erreur de planificateur dalle lorsque vous exécutez une requête qui utilise un TVP dans SQL Server 2008 ou dans SQL Server 2008 R2 si le Générateur de profils SQL ou des événements d’étendue de SQL Server est utilisées.

Résolution

Informations de mise à jour cumulative

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

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

2861107 Cumulative mise à jour 5 pour SQL Server 2012Remarque Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et correctifs de sécurité inclus dans la précédente 2012 de SQL Server version du correctif. Nous vous recommandons l’application la plus récente version du correctif qui comprendra 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 2012 de SQL Server les builds qui ont été publiées après la publication du Service Pack 1 de SQL Server 2012

Solution de contournement

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

  • N’utilisez pas de générateur de profils SQL ou des événements d’étendue de SQL Server.

  • Cliquez pour effacer le RPC : démarrage et RPC : terminé cases à cocher dans la définition de trace.

Plus d'informations

Ce correctif ne s’applique pas à SQL Server 2008 ou SQL Server 2008 R2 lorsque cette base de connaissances est publié. Si les utilisateurs rencontrent le même problème dans SQL Server 2008 ou SQL Server 2008 R2 même après que les utilisateurs s’appliquent le package qui est décrit dans l’article suivant, valider s’il y a un délai d’expiration de la requête et déterminer si le délai d’attente peut être résolu. Dans le cas contraire, soumettre une demande d’application de ce correctif pour SQL Server 2008 ou SQL Server 2008 R2.

CORRIGER des 2520808 : erreur de planificateur dalle lorsque vous exécutez une requête qui utilise un TVP dans SQL Server 2008 ou dans SQL Server 2008 R2 si le Générateur de profils SQL ou des événements d’étendue de SQL Server est utilisées.

Informations de pile d’appels

sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FLookup+0x29sqlmin!CCheckReadersAndWriters::Release+0x69sqlmin!CMainIlb::{dtor}+0x3dsqlmin!CMainIlb::`scalar deleting destructor'+0x3dsqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13sqlmin!CMainIlb::Release+0xf0sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80sqllang!CTraceTvpData::{dtor}+0x14sqllang!CTraceTvpData::`scalar deleting destructor'+0x1esqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x33sqllang!CRpcTraceHelper::~CRpcTraceHelper+0x70sqllang!CRPCExecEnv::~CRPCExecEnv+0x2absqllang!CRPCExecEnv::`scalar deleting destructor'+0x14sqllang!process_request+0x10b1sqllang!process_commands+0x51csqldk!SOS_Task::Param::Execute+0x21esqldk!SOS_Scheduler::RunTask+0xa8sqldk!SOS_Scheduler::ProcessTasks+0x299sqldk!SchedulerManager::WorkerEntryPoint+0x261sqldk!SystemThread::RunWorker+0x8fsqldk!SystemThreadDispatcher::ProcessWorker+0x3c8sqldk!SchedulerManager::ThreadEntryPoint+0x236kernel32!BaseThreadInitThunk+0xdntdll!RtlUserThreadStart+0x1d  
sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FDelete+0x34sqlmin!CCheckReadersAndWriters::Release+0xfbsqlmin!CMainIlb::{dtor}+0x3dsqlmin!CMainIlb::`scalar deleting destructor'+0x3dsqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13sqlmin!CMainIlb::Release+0xf0sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80sqllang!CTraceTvpData::{dtor}+0x11sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x55sqllang!CRpcTraceHelper::TracePostExec+0x1bfsqllang!CRPCExecEnv::OnExecFinish+0xaasqllang!CProtocolHeaderInfo::{dtor}+0xffffffff`ffb158e2sqllang!process_request+0x764sqllang!process_commands+0x51csqldk!SOS_Task::Param::Execute+0x21esqldk!SOS_Scheduler::RunTask+0xa8sqldk!SOS_Scheduler::ProcessTasks+0x29asqldk!SchedulerManager::WorkerEntryPoint+0x261sqldk!SystemThread::RunWorker+0x8fsqldk!SystemThreadDispatcher::ProcessWorker+0x3c8sqldk!SchedulerManager::ThreadEntryPoint+0x236kernel32!BaseThreadInitThunk+0x1antdll!RtlUserThreadStart+0x1d 

État

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

Author: jannawWriter: v-yipliRéviseur technique : pradm ; jannaw ; hozhanEditor: v-mordew

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.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.