تصحيح: يحدث خطأ تجاوز سعة حسابي بشكل متقطع خلال مرحلة "جمع لقطة sys.dm_exec_query_stats" بعد أن قمت بتمكين "مجمع البيانات" في SQL Server 2008

تقوم Microsoft بتوزيع الإصلاحات Microsoft SQL Server 2008 كأحد الملفات القابلة للتنزيل. لأن الإصلاحات التراكمي، كل إصدار جديد يحتوي على كافة الإصلاحات العاجلة وإصدار تصحيح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2008 السابقة.

الأعراض

اطلع على السيناريو التالي.
  • تمكين "أداة تجميع مجمعي البيانات".
  • تحت عبء عمل ثقيل أو لفترات طويلة، عند تشغيل "أداة تجميع مجمعي البيانات"، نشاط صيانة قاعدة البيانات في قواعد بيانات كبيرة، مثل إعادة إنشاء الفهارس، وتحديث الإحصائيات، قد يؤدي إلى خطأ تجاوز سعة حسابي كما يلي. يحدث هذا الخطأ تجاوز السعة الحسابية بشكل متقطع خلال التجميع لقطة لمرحلة sys.dm_exec_query_stats.
الرسالة: مباحث أمن الدولة رمز الخطأ DTS_E_OLEDBERROR. حدث خطأ OLE DB. رمز الخطأ: 0x80040E57.
يتوفر سجل OLE DB. المصدر: "Microsoft SQL Server الأصلي عميل 10.0" Hresult: 0x80040E57 الوصف: "خطأ تجاوز سعة حسابي تحويل تعبير إلى نوع البيانات عدد صحيح".

إذا قمت بزيادة مستوى التسجيل جامع البيانات إلى 2 (على سبيل المثال، يمكنك تشغيل "exec sp_syscollector_update_collection_set @collection_set_id < كوليكتيونسيتيد > = @logging_level = 2" بيان)، يتم إرجاع رسائل الخطأ التالية:
< "التاريخ الوقت" > SEQ-التقاط وتحليل إحصائيات الاستعلام وخطة الاستعلام والنص، خطأ، 6569 DTS_E_OLEDBERROR رمز خطأ مباحث أمن الدولة. حدث خطأ OLE DB. رمز الخطأ: 0x80040E57. < nl/> تتوفر السجل OLE DB. المصدر: "Microsoft SQL Server الأصلي عميل 10.0" Hresult: 0x80040E57 الوصف: "خطأ تجاوز سعة حسابي تحويل تعبير إلى نوع البيانات عدد صحيح". < "التاريخ الوقت" > < "التاريخ الوقت" > OnError، < "التاريخ الوقت" >-1071636471، كويرياكتيفيتيوبلواد، خطأ، رمز الخطأ مباحث أمن الدولة 6569 DTS_E_OLEDBERROR. حدث خطأ OLE DB. رمز الخطأ: 0x80040E57. < nl/> تتوفر السجل OLE DB. المصدر: "Microsoft SQL Server الأصلي عميل 10.0" Hresult: 0x80040E57 الوصف: "خطأ تجاوز سعة حسابي تحويل تعبير إلى نوع البيانات عدد صحيح". < "التاريخ الوقت" > < "التاريخ الوقت" > OnError،-1071636471

< "التاريخ الوقت" > إدارة مكافحة الجريمة المنظمة-بإنشاء المجموعة تحميل الاستعلامات مثيرة للاهتمام، خطأ، مكون 6569 "المواد المستنفدة للأوزون-الحصول على لقطة الحالي من dm_exec_query_stats" رمز الخطأ فشل مرحلة بريكسيكوتي ويرجع (16412) 0xC0202009. < "التاريخ الوقت" > < "التاريخ الوقت" > OnError،-1073450982

< "التاريخ الوقت" > SEQ-التقاط وتحليل إحصائيات الاستعلام وخطة الاستعلام والنص، خطأ، مكون 6569 "المواد المستنفدة للأوزون-الحصول على لقطة الحالي من dm_exec_query_stats" رمز الخطأ فشل مرحلة بريكسيكوتي ويرجع (16412) 0xC0202009. < "التاريخ الوقت" > < "التاريخ الوقت" > OnError،-1073450982

< "التاريخ الوقت" > كويرياكتيفيتيوبلواد، خطأ، مكون 6569 "المواد المستنفدة للأوزون-الحصول على لقطة الحالي من dm_exec_query_stats" رمز الخطأ فشل مرحلة بريكسيكوتي ويرجع (16412) 0xC0202009. < "التاريخ الوقت" > < "التاريخ الوقت" > OnError،-1073450982


في هذا السيناريو، يؤدي البيان التالي الذي تم تشغيله من قبل SQL Server خطأ تجاوز سعة حسابي:
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

ولذلك، إذا قمت بتشغيل هذا البيان يدوياً، قد تتلقى أيضا رسالة الخطأ التالية:
Msg 8115، مستوى 16 حالة 2،

تحويل تعبير إلى نوع بيانات int خطأ تجاوز سعة حسابي

الحل


تم إصدار الإصلاح الخاص بهذه المشكلة أولاً في 5 التحديث التراكمي ل SQL Server 2008 Service Pack 1. لمزيد من المعلومات حول حزمة التحديث التراكمي هذه، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
975977 التراكمية حزمة 5 تحديث ل SQL Server 2008 Service Pack 1
ملاحظة: لأن البنيات تراكمية، يحتوي كل إصدار إصلاح جديد على كافة الإصلاحات العاجلة وإصدار تصحيح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2008 السابقة. توصي Microsoft بمراعاة تطبيق أحدث إصدار للإصلاح الذي يحتوي على هذا الإصلاح العاجل. لمزيد من المعلومات، انقر فوق رقم المقالة التالية لعرضها في "قاعدة معارف Microsoft":
970365 بناء SQL Server 2008 التي تم إصدارها بعد إصدار SQL Server 2008 Service Pack 1
يتم إنشاء الإصلاحات العاجلة ل Microsoft SQL Server 2008 لحزم خدمة SQL Server معينة. يجب تطبيق إصلاح عاجل SQL Server 2008 Service Pack 1 لتثبيت SQL Server 2008 Service Pack 1. بشكل افتراضي، يتم تضمين أي إصلاح جديد قد يتوفر في حزمة خدمـات لـ SQL Server في حزمة خدمـات لـ SQL Server التالية.

الحالة

أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "ينطبق على".

المراجع

لمزيد من المعلومات حول "نموذج تقديم تزايدي" ل SQL Server، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

935897 "نموذج تقديم تزايدي" يتوفر من فريق SQL Server لتسليم الإصلاحات العاجلة للمشاكل التي تم الإبلاغ عنها



لمزيد من المعلومات حول مخطط التسمية لتحديثات SQL Server، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

822499 مخطط تسمية جديد لحزم تحديثات برامج Microsoft SQL Server


لمزيد من المعلومات حول مصطلحات تحديث البرامج، انقر فوق رقم المقال التالي لعرضه في "قاعدة معارف Microsoft":
824684 وصف للمصطلحات القياسية المستخدمة في وصف تحديثات برامج Microsoft
خصائص

رقم الموضوع: 975915 - آخر مراجعة: 13‏/01‏/2017 - المراجعة: 1

تعليقات