Ispravka: Aritmetička greška u prelivanju dolazi povremeno tokom faze "Prikupljanje snimka operativnog sistema sys.dm_exec_query_stats" nakon što ste omogućili kolektor podataka u SQL Server 2008

Radite bilo gde na bilo kom uređaju sa uslugom Microsoft 365

Nadogradite na Microsoft 365 da biste radili bilo gde sa najnovijim funkcijama i ispravkama.

Nadogradi odmah

Microsoft distribuira Ispravke za Microsoft SQL Server 2008 kao jednu datoteku koja se može preuzeti. Pošto su ispravke kumulativne, svako novo izdanje sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje sql Server 2008 ispravke.

Simptomi

Razmotrite sledeći scenario.

  • Omogućavate kolektor podataka.

  • Pod teškim ili produženim opterećenjem posla, kada se kolektor podataka pokrene, aktivnost održavanja baze podataka u veoma velikim bazama podataka, kao što su ponovno kreiranje indeksa i ažuriranje statistike, može dovesti do greške u aritmetičkom prelivanju na sledeći način. Do ove greške u aritmetičkom prelivanju dolazi povremeno tokom snimka sys.dm_exec_query_stats faze.

Poruka: SSIS kôd greške DTS_E_OLEDBERROR. Došlo je do OLE DB greške. Kôd greške: 0x80040E57.An je dostupan OLE DB zapis. Izvor: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E57 Opis: "Aritmetička greška pri konvertovanju izraza u tip podataka int.".

Ako nivo vođenja evidencije kolektora podataka povećate na 2 (na primer, pokrenete izjavu "exec sp_syscollector_update_collection_set @collection_set_id=<CollectionSetID>.@logging_level = 2"), vraćaju se sledeće poruke o grešci:

<Datum>,SEQ - Hvatanje i analiza statistike upita i plana upita i teksta,Greška,6569,,,,SSIS kôd greške DTS_E_OLEDBERROR. Došlo je do OLE DB greške. Kôd greške: 0x80040E57.<nl/>Dostupan je OLE DB zapis. Izvor: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E57 Opis: "Aritmetička greška pri konvertovanju izraza u tip podataka int.".,, <datum>.<Vreme datuma>,,,,OnError,-1071636471 <Datum>,QueryActivityUpload,Error,6569,,,,SIS kôd greške DTS_E_OLEDBERROR. Došlo je do OLE DB greške. Kôd greške: 0x80040E57.<nl/>Dostupan je OLE DB zapis. Izvor: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E57 Opis: "Aritmetička greška pri konvertovanju izraza u tip podataka int.".,, <Vreme datuma>.<Datum>,,,,OnError,-1071636471<Vreme datuma>,DFT - Kreiranje zanimljivih upita otpremanje grupe,Greška,6569,,,,kompetentni "ODS - Nabavi trenutni snimak dm_exec_query_stats" (16412) nije uspeo u fazi pre izvršenja i vraćen je kôd greške 0xC0202009.,, <Datum vremena>.<Vreme datuma>,,,,Onerror,-1073450982<Datum vreme>,SEQ - Hvatanje i analiza statističkih podataka i plana upita i teksta,Greška,6569,,,,kompetentni ,,,,OS - Dobijte trenutni snimak dm_exec_query_stats" (16412) nije uspeo u fazi pre izvršenja i vratio je kôd greške 0xC0202009., <Datum>.<Datum vremena>,,,,OnError,-1073450982<Datum> ,QueryActivityUpload,Error,6569,,,,kompetentni "ODS - Get current snapshot of dm_exec_query_stats" (16412) nije uspeo u fazi pre izvršenja i vratio je kôd greške 0xC0202009., <Vreme datuma>.<Datum>,,,,OnError,1073450820

U ovom slučaju, sledeća izjava koju pokrene SQL Server dovodi do greške u aritmetičkom prelivanju:

SET NOCOUNT ONDECLARE @p1 datetimeSET @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_timeFROM(    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 sqlGROUP BY [sql_handle], plan_handle, statement_start_offset, statement_end_offset ORDER BY [sql_handle], plan_handle, statement_start_offset, statement_end_offset

Zbog toga, ako ručno pokrenete ovu izjavu, možete dobiti i sledeću poruku o grešci:

Msg 8115, nivo 16, stanje 2,Aritmetička greška pri konvertovanju izraza u int tipa podataka

Rešenje

Ispravka za ovaj problem je prvi put objavljena u kumulativnoj iskaznoj iska 5 za SQL Server 2008 servisni paket 1. Za više informacija o ovom paketu kumulativnih ispravki kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

975977 Kumulativna ispravka paket 5 za SQL Server 2008 servisni paket 1Napomena Pošto su verzije kumulativne, svako novo izdanje ispravki sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje sql Server 2008 ispravke. Microsoft preporučuje da razmislite o primeni najnovijeg izdanja ispravki koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

970365 SQL Server 2008 gradi koje su objavljene nakon što je SQL Server 2008 servisni paket 1 objavljenMicrosoft SQL Server 2008 hitne ispravke se kreiraju za određene SQL Server servisne pakete. Hitnu ispravku za SQL Server 2008 Service Pack 1 morate primeniti na instalaciju servisnog paketa SQL Server 2008 Service Pack 1. Podrazumevano je da je svaka hitna ispravka koja je obezbeđena u SQL Server servisnom paketu uključena u sledeći SQL Server servisni paket.

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".

Reference

Za više informacija o postepenom modelu servisiranja za SQL Server kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

935897 Postepeni model servisiranja dostupan je od SQL Server tima za isporuku hitnih ispravki za prijavljene problemeZa više informacija o šemi imenovanja za ispravke za SQL Server kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

822499Nova šema imenovanja za pakete softverskih ispravki za Microsoft SQL ServerZa više informacija o terminologiji softverskih ispravki kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

824684 Opis standardne terminologije koja se koristi za opisivanje Microsoft softverskih ispravki

Potrebna vam je dodatna pomoć?

Unapredite veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Microsoft insajdere

Da li su vam ove informacije koristile?

Hvala vam na povratnim informacijama!

Hvala za povratne informacije! Izgleda da će biti od pomoći ako vas povežemo sa našim agentima Office podrške.

×