Update: Arithmetische Überlauffehler tritt zeitweise der Phase "Snapshot dm_exec_query_stats sammeln" nachdem Sie Datensammler in SQL Server 2008 aktiviert

Microsoft stellt Updates für Microsoft SQL Server 2008 als downloadbare Datei. Da die kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2008 geliefert wurden.

Problembeschreibung

Das folgende Szenario.
  • Sie aktivieren den Datensammler.
  • Arbeitslast einer schweren oder längeren Ausführung der Datensammler führen Wartung Datenbankaktivität bei sehr großen Datenbanken wie Neuerstellen von Indizes und Statistiken aktualisieren arithmetischen Überlauf Fehler wie folgt. Diese arithmetische Überlauffehler tritt zeitweise während sammeln Snapshot dm_exec_query_stats Phase.
Meldung: SSIS-Fehlercode DTS_E_OLEDBERROR. Ein OLE DB-Fehler aufgetreten. Fehlercode: 0x80040E57.
Ein OLE DB-Datensatz ist verfügbar. Quelle: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E57 Beschreibung: "arithmetische Überlauffehler Ausdruck in den Datentyp int konvertieren".

Data Collector-Protokollierungsstufe 2 erhöht (z. B. Ausführen der "Exec Sp_syscollector_update_collection_set @collection_set_id = < CollectionSetID > @logging_level = 2" Anweisung), die folgenden Fehlermeldungen zurückgegeben werden:
< Datum-Uhrzeit > SEQ - erfassen und Analysieren Abfragestatistiken und Abfrageplan und Text, Fehler 6569,, SSIS-Fehler Code DTS_E_OLEDBERROR. Ein OLE DB-Fehler aufgetreten. Fehlercode: 0x80040E57. < nl / > eine OLE DB-Datensatz ist verfügbar. Quelle: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E57 Beschreibung: "arithmetische Überlauffehler Datentyp int Ausdruck umwandeln"., < Datum-Uhrzeit >, < Datum-Uhrzeit >,, OnError < Datum-Uhrzeit >-1071636471, QueryActivityUpload, Fehler 6569,, SSIS-Fehlercode DTS_E_OLEDBERROR. Ein OLE DB-Fehler aufgetreten. Fehlercode: 0x80040E57. < nl / > eine OLE DB-Datensatz ist verfügbar. Quelle: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E57 Beschreibung: "arithmetische Überlauffehler Datentyp int Ausdruck umwandeln"., < Datum-Uhrzeit >, < Datum-Uhrzeit >,, OnError,-1071636471

< Datum-Uhrzeit > DFT - interessante hochladen Batch Abfragen erstellen, Fehler 6569,, Komponente "ODS - Get aktuelle Momentaufnahme des Dm_exec_query_stats" (16412) Pre-execute Phase fehlgeschlagen und zurückgegebenen Fehlercode 0xC0202009., < Datum-Uhrzeit >, < Datum-Uhrzeit >,, OnError,-1073450982

< Datum-Uhrzeit > SEQ - erfassen und Analysieren Abfragestatistiken und Abfrageplan und Text, Fehler 6569,, Komponente "ODS - Get aktuelle Momentaufnahme des Dm_exec_query_stats" (16412) Pre-execute Phase fehlgeschlagen und zurückgegebenen Fehlercode 0xC0202009., < Datum-Uhrzeit >, < Datum-Uhrzeit >,, OnError,-1073450982

< Datum-Uhrzeit > QueryActivityUpload, Fehler 6569,, Komponente "ODS - Get aktuelle Momentaufnahme des Dm_exec_query_stats" (16412) Pre-execute Phase fehlgeschlagen und zurückgegebenen Fehlercode 0xC0202009., < Datum-Uhrzeit >, < Datum-Uhrzeit >,, OnError,-1073450982


In diesem Szenario führt die folgende Anweisung, die von SQL Server ausgeführt arithmetische Überlauffehler:
SET NOCOUNT ONDECLARE @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

Daher, wenn Sie dies manuell ausführen, auch die folgende Fehlermeldung erhalten Sie:
Msg 8115, Ebene 16, Status 2

Arithmetische Überlauffehler Datentyp Int Ausdruck umwandeln

Problemlösung


Die Fehlerbehebung für dieses Problem wurde zuerst im kumulativen Update 5 für SQL Server 2008 Service Pack 1 veröffentlicht. Für weitere Informationen zu diesem kumulativen Update-Paket, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
975977 kumulative Updatepaket 5 für SQL Server 2008 Service Pack 1
Hinweis Da diese Builds kumulativ sind, enthält jede neue Veröffentlichung alle Hotfixes und alle die Sicherheitsupdates, die in den vorherigen SQL Server 2008 Fix-Veröffentlichung enthalten waren. Microsoft empfiehlt, dass Sie prüfen die neueste Update-Version, die diesen Hotfix enthält. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
970365 die SQL Server 2008 builds, die nach der Freigabe von SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008-Hotfixes sind für bestimmte SQL Server Servicepacks erstellt. Sie müssen SQL Server 2008 Service Pack 1-Hotfix eine Installation von SQL Server 2008 Service Pack 1 anwenden. Standardmäßig ist jeder Hotfix, der in einem SQL Server Servicepack bereitgestellt wird, in einem nächsten Servicepack für SQL Server enthalten.

Status

Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

Referenzen

Weitere Informationen zum inkrementellen Dienstmodell für SQL Server klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

935897 erläutert wird ein inkrementelles Dienstmodell steht der SQL Server-Team zu Hotfixes für gemeldete Probleme



Weitere Informationen zum Benennungsschema für SQL Server-Updates klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

822499 Neues Benennungsschema für Softwareupdatepakete für Microsoft SQL Server


Um weitere Informationen zur Terminologie für Softwareupdates zu erhalten, klicken Sie auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:
824684 Erläuterung von der standardmäßigen Standardbegriffen bei Microsoft Softwareupdates
Eigenschaften

Artikelnummer: 975915 – Letzte Überarbeitung: 13.01.2017 – Revision: 1

Feedback