Oprava: Chyba přetečení aritmetické dochází nepravidelně během fáze "Shromáždit snímek sys.dm_exec_query_stats" Po povolení kolekcí dat v produktu SQL Server 2008

Překlady článku Překlady článku
ID článku: 975915 - Produkty, které se vztahují k tomuto článku.
Společnost Microsoft distribuuje opravy Microsoft SQL Server 2008 jako jeden soubor ke stažení. Protože jsou kumulativní opravy, každé nové vydání obsahuje všechny opravy hotfix a opravte všechny opravy zabezpečení, které byly součástí předchozí SQL Server 2008 vydání.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Předpokládejme následující situaci.
  • Povolit shromažďování dat.
  • Ve skupinovém rámečku Tučná nebo dlouhotrvající vytížení při spuštění kolekcí dat činnosti údržby databáze na velmi rozsáhlých databází, například opětovné sestavení indexy a aktualizaci statistiky, může vést k chybě přetečení aritmetické způsobem. K této chybě přetečení aritmetické dochází nepravidelně během shromažďování snímek fáze sys.dm_exec_query_stats.
Zpráva: Kód chyby SSIS DTS_E_OLEDBERROR. Došlo k chybě OLE DB. Kód chyby: 0x80040E57.
Záznam OLE DB je k dispozici. Zdroj: "Microsoft SQL Server Native Client 10.0" HRESULT: 0x80040E57 Popis: „ Chyba přetečení aritmetické převod výraz na datový typ int. „.

Pokud zvýšíte úroveň protokolování kolekcí dat na 2 (například spustit "exec sp_syscollector_update_collection_set @ collection_set_id <collectionsetid>=, @ logging_level = 2" výkazu), jsou vráceny následující chybové zprávy:
<Datum Čas > SEQ - sběr a analyzovat statistiku dotazu a plán dotazů a text, Error, 6569,,,, SSIS chyba kód DTS_E_OLEDBERROR. Došlo k chybě OLE DB. Kód chyby: 0x80040E57. <nl/> záznamu OLE DB je k dispozici. Zdroj: "Microsoft SQL Server Native Client 10.0" HRESULT: 0x80040E57 Popis: „ Chyba přetečení aritmetické převod výraz na datový typ int. „.,, < Časových >,, < Časových >,,,, PřiChybě,-1071636471 < Časových >, QueryActivityUpload, Error, 6569,,,, SSIS chyba kód DTS_E_OLEDBERROR. Došlo k chybě OLE DB. Kód chyby: 0x80040E57. <nl/> záznamu OLE DB je k dispozici. Zdroj: "Microsoft SQL Server Native Client 10.0" HRESULT: 0x80040E57 Popis: „ Chyba přetečení aritmetické převod výraz na datový typ int. „.,, < Časových >,, < Časových >,,,, PřiChybě-1071636471

<Datum Čas > DFT - vytvořit zajímavé dotazy uložit list, Error, 6569,,,, součást "ODS - GET aktuální snímek dm_exec_query_stats" (16412) se nezdařilo fáze pre-execute a vrátilo chybový kód 0xC0202009.,, < Časových >,, < Časových >,,,, PřiChybě-1073450982

<Datum Čas > SEQ - sběr a analyzovat statistiku dotazu a dotaz plán a text, Error, 6569,,,, součást "ODS - GET aktuální snímek dm_exec_query_stats" (16412) se nezdařilo fáze pre-execute a vrátilo chybový kód 0xC0202009.,, < Časových >,, < Časových >,,,, PřiChybě-1073450982

<Datum Čas > QueryActivityUpload, Error, 6569,,,, součást "ODS - GET aktuální snímek dm_exec_query_stats" (16412) se nezdařilo fáze pre-execute a vrátilo chybový kód 0xC0202009.,, < Časových >,, < Časových >,,,, PřiChybě-1073450982


V tomto scénáři následující příkaz Spustit serverem SQL způsobí chybu přetečení aritmetické:
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
důvodu, pokud tento příkaz spustit ručně, můžete také obdržet následující chybová zpráva:
Msg 8115, úroveň 16, 2, stav
Chyba přetečení aritmetické převod výraz na datový typ int

Řešení

Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 5 pro SQL Server 2008 Service Pack 1. Další informace o tomto balíčku kumulativní aktualizace klepněte na následující číslo článku databáze Microsoft Knowledge Base:
975977Balíček kumulativní aktualizace 5 pro SQL Server 2008 Service Pack 1
Poznámka: Protože jsou kumulativní sestavení, každé nové verzi oprava obsahuje všechny opravy hotfix a opravte všechny opravy zabezpečení, které byly součástí předchozí SQL Server 2008 vydání. Společnost Microsoft doporučuje zvážit instalaci nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
970365Sestaví SQL Server 2008, které byly vydány po vydání SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 opravy hotfix jsou vytvořeny pro konkrétní aktualizace service Pack pro SQL Server. K instalaci aplikace SQL Server 2008 Service Pack 1, je třeba použít opravu hotfix SQL Server 2008 Service Pack 1. Ve výchozím opravy hotfix, která je poskytována v aktualizace service pack pro SQL Server součástí příští aktualizace service pack pro SQL Server.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Odkazy

Další informace o modelu přírůstkové Servicing pro SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:
935897Přírůstkové Model Servicing je k dispozici z týmu SQL Server doručit opravy hotfix pro nahlášené potíže


Další informace o pojmenování schématu aktualizace SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:
822499Nové schéma přidělování názvů pro balíčky aktualizací softwaru Microsoft SQL Server


Další informace o terminologii používané v aktualizacích softwaru naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
824684Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft

Vlastnosti

ID článku: 975915 - Poslední aktualizace: 16. listopadu 2009 - Revize: 1.1
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Klíčová slova: 
kbmt kbexpertiseadvanced kbsurveynew kbqfe kbfix KB975915 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:975915

Dejte nám zpětnou vazbu

 

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