REVISIÓN: Se produce un error de desbordamiento aritmético intermitentemente durante la fase de "Recopilar una instantánea de sys.dm_exec_query_stats" después de habilitar a recopiladores de datos de SQL Server 2008

Seleccione idioma Seleccione idioma
Id. de artículo: 975915 - Ver los productos a los que se aplica este artículo
Microsoft distribuye correcciones de Microsoft SQL Server 2008 como un archivo que se puede descargar. Como las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008.
Expandir todo | Contraer todo

Síntomas

Tenga en cuenta la situación siguiente.
  • Habilitar al Recopilador de datos.
  • Bajo una carga de trabajo intenso o prolongado, cuando se ejecuta el recopilador de datos, actividad de mantenimiento de base de datos en bases de datos muy grandes, como reconstruir índices y actualización de estadísticas, puede provocar el error de desbordamiento aritmético como sigue. Este error de desbordamiento aritmético produce intermitentemente durante la recopilación de fase sys.dm_exec_query_stats instantánea.
Mensaje: SSIS Código_error DTS_E_OLEDBERROR. Error de OLE DB. Código de error: 0x80040E57.
Un registro de OLE DB está disponible. Origen: "Microsoft SQL Server Native Client 10.0" HRESULT: 0x80040E57 Descripción: "error de desbordamiento aritmético convertir expresión a tipo de datos int.".

Si aumenta el nivel de registro del recopilador de datos a 2 (por ejemplo, ejecute el "exec sp_syscollector_update_collection_set @ collection_set_id = <collectionsetid>, @ logging_level = 2" instrucción), se devuelven los mensajes de error siguientes:
<Fecha Hora >, SEQ - capturar y analizar las estadísticas de consulta y plan de consulta y texto, error, 6569,,, DTS_E_OLEDBERROR de código de error de SSIS. Error de OLE DB. Código de error: 0x80040E57. <nl/> OLE DB un registro está disponible. Origen: "Microsoft SQL Server Native Client 10.0" HRESULT: 0x80040E57 Descripción: "error de desbordamiento aritmético convertir expresión a tipo de datos int.".,, < Fecha Hora,, > < Fecha Hora,,, > OnError,-1071636471 < Fecha, Hora, > QueryActivityUpload, error, 6569,,, DTS_E_OLEDBERROR de código de error de SSIS. Error de OLE DB. Código de error: 0x80040E57. <nl/> OLE DB un registro está disponible. Origen: "Microsoft SQL Server Native Client 10.0" HRESULT: 0x80040E57 Descripción: "error de desbordamiento aritmético convertir expresión a tipo de datos int.".,, < Fecha Hora,, > < Fecha Hora,,, > OnError,-1071636471

<Fecha Hora >, DFT - crear interesantes consultas cargar lote, error, 6569,,, componente "ODS - obtener la instantánea actual de dm_exec_query_stats" código de error devuelto y ha fallado la fase de pre-execute (16412) 0xC0202009.,, < Fecha Hora,, > < Fecha Hora,,, > OnError,-1073450982

<Fecha Hora >, SEQ - capturar y analizar las estadísticas de consulta y consulta plan y texto, error, 6569,,, componente "ODS - obtener la instantánea actual de dm_exec_query_stats" código de error devuelto y ha fallado la fase de pre-execute (16412) 0xC0202009.,, < Fecha Hora,, > < Fecha Hora,,, > OnError,-1073450982

<Fecha Hora >, QueryActivityUpload, error, 6569,,, componente "ODS - obtener la instantánea actual de dm_exec_query_stats" código de error devuelto y ha fallado la fase de pre-execute (16412) 0xC0202009.,, < Fecha Hora,, > < Fecha Hora,,, > OnError,-1073450982


En este escenario, la siguiente instrucción que se ejecuta SQL Server hace que el error de desbordamiento aritmético:
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
por tanto, si ejecuta esta instrucción manualmente, también puede recibir el siguiente mensaje de error:
Msj 8115, nivel 16, estado 2,
Error de desbordamiento aritmético al convertir expresión a tipo de datos int

Solución

La corrección para este problema se publicó por primera vez en 5 de actualización acumulativa para SQL Server 2008 Service Pack 1. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
9759775 De paquete de actualización acumulativa para SQL Server 2008 Service Pack 1
Nota Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Microsoft recomienda que considere aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
970365Compilaciones de SQL Server 2008 se publicaron después del lanzamiento de SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 revisiones se crean para determinados service Pack de SQL Server. Debe aplicar una revisión de Service Pack 1 de SQL Server 2008 a una instalación de SQL Server 2008 Service Pack 1. De forma predeterminada, cualquier revisión suministrada en un service pack de SQL Server se incluye en el siguiente service pack.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".

Referencias

Para obtener más información sobre el modelo de servicio incremental para SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
935897Un modelo incremental de servicio está disponible desde el equipo de SQL Server para entregar revisiones para problemas detectados


Para obtener más información acerca del esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
822499Nuevo esquema de nomenclatura para los paquetes de actualización de software de Microsoft SQL Server


Para obtener más información acerca de la terminología relativa a las actualizaciones de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft

Propiedades

Id. de artículo: 975915 - Última revisión: lunes, 16 de noviembre de 2009 - Versión: 1.1
La información de este artículo se refiere a:
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Palabras clave: 
kbmt kbexpertiseadvanced kbsurveynew kbqfe kbfix KB975915 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 975915

Enviar comentarios

 

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