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