CORRECTIF : Une erreur de dépassement de capacité arithmétique se produit par intermittence pendant la phase de «Collecte un instantané de sys.dm_exec_query_stats» après l'activation de collecteurs de données dans SQL Server 2008

Traductions disponibles Traductions disponibles
Numéro d'article: 975915 - Voir les produits auxquels s'applique cet article
Microsoft distribue les correctifs de Microsoft SQL Server 2008 sous la forme d'un fichier téléchargeable unique. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et tous les correctifs de sécurité inclus avec la précédente de SQL Server 2008 version du correctif.
Agrandir tout | Réduire tout

Symptômes

Envisagez le scénario suivant.
  • Vous activez le collecteur de données.
  • Sous une charge de travail intense ou prolongée, lorsque le collecteur de données s'exécute, activité de maintenance de la base de données sur des bases de données très volumineuses, telles que la reconstruction des index et la mise à jour des statistiques, peut entraîner l'erreur de dépassement de capacité arithmétique comme suit. Cette erreur de dépassement de capacité arithmétique produit par intermittence lors de la collecter un instantané de phase sys.dm_exec_query_stats.
Message : Code d'erreur SSIS DTS_E_OLEDBERROR. Une erreur OLE DB s'est produite. Code d'erreur : 0x80040E57.
Un enregistrement OLE DB est disponible. Source: «Microsoft SQL Server Native Client 10.0"HRESULT : 0x80040E57 Description: «erreur de dépassement de capacité arithmétiques conversion expression en type de données int.».

Si vous augmentez le niveau d'enregistrement de collecteur de données à 2 (par exemple, vous exécutez le «exec sp_syscollector_update_collection_set @ collection_set_id = <collectionsetid>, @ logging_level = 2 "instruction), messages d'erreur suivants sont renvoyées :
<Date Heure >, SEQ - capturer et analyser les statistiques de requête et plan de requête et le texte, erreur, 6569,,,, SSIS erreur code DTS_E_OLEDBERROR. Une erreur OLE DB s'est produite. Code d'erreur : 0x80040E57. <nl/> OLE DB un enregistrement est disponible. Source: «Microsoft SQL Server Native Client 10.0"HRESULT : 0x80040E57 Description: «erreur de dépassement de capacité arithmétiques conversion expression en type de données int.».,, < Date Heure,, > < Date Heure >,,,, OnError,-1071636471 < Date Heure >, QueryActivityUpload, erreur, 6569,,,, SSIS erreur code DTS_E_OLEDBERROR. Une erreur OLE DB s'est produite. Code d'erreur : 0x80040E57. <nl/> OLE DB un enregistrement est disponible. Source: «Microsoft SQL Server Native Client 10.0"HRESULT : 0x80040E57 Description: «erreur de dépassement de capacité arithmétiques conversion expression en type de données int.».,, < Date Heure,, > < Date Heure >,,,, OnError,-1071636471

<Date Heure >, DFT - créer intéressants requêtes télécharger lot, erreur, 6569,,,, composant «ODS - Get capture instantanée en cours de dm_exec_query_stats» (16412) code d'erreur retourné a échoué la phase de pre-execute 0xC0202009.,, < Date Heure,, > < Date Heure >,,,, OnError,-1073450982

<Date Heure >, SEQ - capture et d'analyser les statistiques de requête et requête plan et le texte, erreur, 6569,,,, composant «ODS - Get capture instantanée en cours de dm_exec_query_stats» (16412) code d'erreur retourné a échoué la phase de pre-execute 0xC0202009.,, < Date Heure,, > < Date Heure >,,,, OnError,-1073450982

<Date Heure >, QueryActivityUpload, erreur, 6569,,,, composant «ODS - Get capture instantanée en cours de dm_exec_query_stats» (16412) code d'erreur retourné a échoué la phase de pre-execute 0xC0202009.,, < Date Heure,, > < Date Heure >,,,, OnError,-1073450982


Dans ce scénario, l'instruction suivante est exécutée par SQL Server provoque l'erreur de dépassement de capacité arithmétique :
SET NOCOUNT ON
DECLARE @p1 datetime
SET @p1 = GETDATE()

SELECT 
    [sql_handle],
    statement_start_offset,
    statement_end_offset,
    -- Use ISNULL here and in other columns to handle in-progress queries that are not yet in sys.dm_exec_query_stats.  
    -- These values only come from sys.dm_exec_query_stats. If the plan does not show up in sys.dm_exec_query_stats 
    -- (first execution of a still-in-progress query, visible in sys.dm_exec_requests), these values will be NULL. 
    MAX (plan_generation_num) AS plan_generation_num,
    plan_handle,
    MIN (creation_time) AS creation_time, 
    MAX (last_execution_time) AS last_execution_time,
    SUM (execution_count) AS execution_count,
    SUM (total_worker_time) AS total_worker_time,
    MIN (min_worker_time) AS min_worker_time,           -- NULLable
    MAX (max_worker_time) AS max_worker_time,
    SUM (total_physical_reads) AS total_physical_reads,
    MIN (min_physical_reads) AS min_physical_reads,     -- NULLable
    MAX (max_physical_reads) AS max_physical_reads,
    SUM (total_logical_writes) AS total_logical_writes,
    MIN (min_logical_writes) AS min_logical_writes,     -- NULLable
    MAX (max_logical_writes) AS max_logical_writes,
    SUM (total_logical_reads) AS total_logical_reads,
    MIN (min_logical_reads) AS min_logical_reads,       -- NULLable
    MAX (max_logical_reads) AS max_logical_reads,
    SUM (total_clr_time) AS total_clr_time,
    MIN (min_clr_time) AS min_clr_time,                 -- NULLable
    MAX (max_clr_time) AS max_clr_time,
    SUM (total_elapsed_time) AS total_elapsed_time,
    MIN (min_elapsed_time) AS min_elapsed_time,         -- NULLable
    MAX (max_elapsed_time) AS max_elapsed_time,
    @p1 AS collection_time
FROM
(
    SELECT  
        [sql_handle],
        statement_start_offset,
        statement_end_offset,
        plan_generation_num,
        plan_handle,
        creation_time,
        last_execution_time,
        execution_count,
        total_worker_time,
        min_worker_time,
        max_worker_time,
        total_physical_reads,
        min_physical_reads,
        max_physical_reads,
        total_logical_writes,
        min_logical_writes,
        max_logical_writes,
        total_logical_reads,
        min_logical_reads,
        max_logical_reads,
        total_clr_time,
        min_clr_time,
        max_clr_time,
        total_elapsed_time,
        min_elapsed_time,
        max_elapsed_time 
    FROM sys.dm_exec_query_stats AS q
    -- Temporary workaround for VSTS #91422.  This should be removed if/when sys.dm_exec_query_stats reflects in-progress queries. 
    UNION ALL 
    SELECT 
        r.[sql_handle],
        r.statement_start_offset,
        r.statement_end_offset,
        ISNULL (qs.plan_generation_num, 0) AS plan_generation_num,
        r.plan_handle,
        ISNULL (qs.creation_time, r.start_time) AS creation_time,
        r.start_time AS last_execution_time,
        1 AS execution_count,
        -- dm_exec_requests shows CPU time as ms, while dm_exec_query_stats 
        -- uses microseconds.  Convert ms to us. 
        r.cpu_time * 1000 AS total_worker_time,
        qs.min_worker_time,     -- min should not be influenced by in-progress queries
        r.cpu_time * 1000 AS max_worker_time,
        r.reads AS total_physical_reads,
        qs.min_physical_reads,  -- min should not be influenced by in-progress queries
        r.reads AS max_physical_reads,
        r.writes AS total_logical_writes,
        qs.min_logical_writes,  -- min should not be influenced by in-progress queries
        r.writes AS max_logical_writes,
        r.logical_reads AS total_logical_reads,
        qs.min_logical_reads,   -- min should not be influenced by in-progress queries
        r.logical_reads AS max_logical_reads,
        qs.total_clr_time,      -- CLR time is not available in dm_exec_requests
        qs.min_clr_time,        -- CLR time is not available in dm_exec_requests
        qs.max_clr_time,        -- CLR time is not available in dm_exec_requests
        -- dm_exec_requests shows elapsed time as ms, while dm_exec_query_stats 
        -- uses microseconds.  Convert ms to us. 
        r.total_elapsed_time * 1000 AS total_elapsed_time,
        qs.min_elapsed_time,    -- min should not be influenced by in-progress queries
        r.total_elapsed_time * 1000 AS max_elapsed_time
    FROM sys.dm_exec_requests AS r 
    LEFT OUTER JOIN sys.dm_exec_query_stats AS qs ON r.plan_handle = qs.plan_handle AND r.statement_start_offset = qs.statement_start_offset 
        AND r.statement_end_offset = qs.statement_end_offset 
    WHERE r.sql_handle IS NOT NULL 
) AS query_stats 
OUTER APPLY sys.dm_exec_sql_text (sql_handle) AS sql
GROUP BY [sql_handle], plan_handle, statement_start_offset, statement_end_offset 
ORDER BY [sql_handle], plan_handle, statement_start_offset, statement_end_offset
donc, si vous exécutez manuellement cette instruction, vous pouvez également recevoir le message d'erreur suivantes :
Msg 8115, niveau 16, état 2,
Erreur de dépassement de capacité arithmétique conversion expression en type de données int

Résolution

Tout d'abord, le correctif de ce problème a été publié dans mise à jour cumulative 5 pour SQL Server 2008 Service Pack 1. Pour plus d'informations sur ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
975977Package de mise à jour cumulative 5 pour SQL Server 2008 Service Pack 1
Remarque Les versions étant cumulatifs, chaque nouvelle version de correctif contient l'intégralité des correctifs et tous les correctifs de sécurité inclus avec la précédente de SQL Server 2008 version du correctif. Microsoft vous recommande d'envisager 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 :
970365Versions de SQL Server 2008 publiées après SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 les correctifs sont créés pour les service packs pour SQL Server spécifiques. Vous devez appliquer un correctif SQL Server 2008 Service Pack 1 pour une installation de SQL Server 2008 Service Pack 1. Par défaut, aucun correctif fourni dans un service pack SQL Server est inclus dans le prochain service pack SQL Server.

Statut

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

Références

Pour plus d'informations sur le modèle ISM (Incremental Servicing Model) pour SQL Server, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
935897Un modèle ISM (Incremental Servicing Model) est disponible à partir de l'équipe SQL Server pour la fourniture des correctifs logiciels pour les problèmes signalés


Pour plus d'informations sur le schéma d'affectation de noms pour les mises à jour de SQL Server, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
822499Nouveau modèle d'affectation de noms pour les packages de mises à jour logicielles de Microsoft SQL Server


Pour plus d'informations sur la terminologie de mise à jour de logiciel, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
824684Description de la terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft

Propriétés

Numéro d'article: 975915 - Dernière mise à jour: lundi 16 novembre 2009 - Version: 1.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Mots-clés : 
kbmt kbexpertiseadvanced kbsurveynew kbqfe kbfix KB975915 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 975915
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com