ينطبق على
SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Enterprise Core

توزع microsoft التصحيحات الخاصة ب Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) كملف واحد يمكن تنزيله. نظرا لان التصحيحات متراكمة ، فان كل إصدار جديد يحتوي علي كل الإصلاحات العاجلة وكل تصحيحات الأمان التي تم تضمينها في إصدار التصحيح السابق ل SQL Server 2008 R2 Service Pack 1 (SP1).

مؤشرات الخطأ

اطّلع على السيناريو التالي:

  • لديك عمود نوع بيانات datetimeoffset في جدول في Microsoft sql Server 2008 R2 أو في Microsoft sql server 2012.

  • يمكنك إنشاء فهرس في العمود datetimeoffset .

  • يمكنك تحويل نوع البيانات datetimeoffset إلى نوع بيانات سمالداتيتيمي باستخدام الدالة CAST أو convert دون وسيطه النمط ، أو عندما تكون قيمه وسيطه النمط0.

  • يتم استخدام نتيجة الدالة CAST أو CONVERT في عامل تصفيه في استعلام SQL للعمليات.

  • تقوم بتشغيل استعلام SQL للعمليات.

في هذا السيناريو ، تكون النتيجة التي يتم إرجاعها بواسطة الاستعلام غير صحيحه لان عامل التصفية لا يعمل بشكل صحيح. علي سبيل المثال ، افترض ان العمود datetimeoffset المسمي "التاريخ" يحتوي علي القيم التالية:

  • 2011-05-21 23:00:00 -01:00

  • 2011-05-21 23:00:00 +00:00

  • 2011-05-21 23:00:00 +01:00

تقوم بتشغيل الاستعلام التالي:

SELECT Date FROM TestTable WHERE CAST(Date AS smalldatetime)= '2011-05-21 23:00:00'

ترجع نتيجة الاستعلام صفا واحدا فقط. ومع ذلك ، يجب ان ترجع النتيجة المتوقعة الصفوف لكل القيم الثلاثة.

الحل

معلومات التحديث التراكمي

SQL Server 2012

تم إصدار التصحيح لهذه المشكلة أولا في التحديث التراكمي 3 ل SQL Server 2012. للحصول علي مزيد من المعلومات حول حزمه التحديث التراكمي هذه ، انقر فوق رقم المقالة التالي لعرض المقالة في قاعده معارف Microsoft:

2723749 حزمه التحديثات التراكمية 3 ل SQL Server 2012ملاحظة يتم إصدار Acrobat Reader من قِبل شركة Adobe Systems Inc.‎. نظرا لان الإصدارات تراكمية ، فان كل إصدار إصلاح جديد يحتوي علي كل الإصلاحات العاجلة وكل تصحيحات الأمان التي تم تضمينها في إصدار SQL Server 2012 تصحيح السابق. توصي Microsoft بمراعاه تطبيق أحدث إصدار من الإصلاحات التي تحتوي علي هذا الإصلاح العاجل. للمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":

2692828 تم إصدار SQL Server 2012 الذي تم إصداره بعد SQL Server 2012 يجب تطبيق إصلاح عاجل ل SQL Server 2012 علي تثبيت SQL Server 2012.

SQL Server 2008 R2 Service Pack 2

تم إصدار التصحيح لهذه المشكلة أولا في التحديث التراكمي 1 ل SQL Server 2008 R2 Service Pack 2. لمزيد من المعلومات حول كيفيه الحصول علي حزمه التحديث التراكمي هذه ، انقر فوق رقم المقالة التالية لعرض المقالة في قاعده معارف Microsoft:

2720425 حزمه التحديث التراكمي 1 ل SQL Server 2008 R2 Service Pack 2ملاحظة يتم إصدار Acrobat Reader من قِبل شركة Adobe Systems Inc.‎. نظرا لان الإصدارات تراكمية ، فان كل إصدار إصلاح جديد يحتوي علي كل الإصلاحات العاجلة وكل تصحيحات الأمان التي تم تضمينها في إصدار SQL Server 2008 R2 السابق. من المستحسن تطبيق أحدث إصدار من التصحيحات التي تحتوي علي هذا الإصلاح العاجل. للمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":

2730301 تم إصدار الإصدارات SQL Server 2008 R2 التي تم إصدارها بعد SQL Server 2008 R2 Service Pack 2

SQL Server 2008 R2 SP1

تم إصدار التصحيح لهذه المشكلة أولا في التحديث التراكمي 7. للحصول علي مزيد من المعلومات حول كيفيه الحصول علي حزمه التحديث التراكمي هذه ل SQL Server 2008 R2 Service Pack 1 ، انقر فوق رقم المقالة التالي لعرض المقالة في قاعده معارف Microsoft:

2703282 حزمه التحديث التراكمي 7 ل SQL Server 2008 R2 SP1ملاحظة يتم إصدار Acrobat Reader من قِبل شركة Adobe Systems Inc.‎. نظرا لان الإصدارات تراكمية ، فان كل إصدار إصلاح جديد يحتوي علي كل الإصلاحات العاجلة وكل تصحيحات الأمان التي تم تضمينها في إصدار التصحيح السابق ل SQL Server 2008 R2 Service Pack 1. من المستحسن تطبيق أحدث إصدار من التصحيحات التي تحتوي علي هذا الإصلاح العاجل. للمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":

2567616 تم إصدار الإصدارات SQL Server 2008 R2 التي تم إصدارها بعد SQL Server 2008 R2 SP1

مزيد من المعلومات

لأعاده إنتاج المشكلة ، اتبع الخطوات التالية:

  1. قم بتشغيل الاستعلام التالي لإنشاء جدول باستخدام عمود datetimeoffset ولادراج بعض السجلات:CREATE TABLE #TestTimeZones (dto datetimeoffset(0)); GO INSERT INTO #TestTimeZones(dto) VALUES ('2011-05-21 23:00:00 -01:00'), ('2011-05-21 23:00:00 +00:00'), ('2011-05-21 23:00:00 +01:00'); GO

  2. قم بتشغيل الاستعلام التالي ، ويمكنك الاطلاع علي ان كل القيم الثلاثة مدرجه بشكل صحيح في النتيجة التي تم إرجاعها:DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withoutIndex FROM #TestTimeZones WHERE CAST(dto AS smalldatetime)=@t;

  3. قم بتشغيل الاستعلام التالي لإنشاء فهرس في العمود "dto" ولتكرار الاستعلام نفسه:CREATE INDEX IX_testTimeZones_Dto ON #TestTimeZones(dto); GO -- Repeat the same query DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withIndex FROM #TestTimeZones WHERE CAST(dto A smalldatetime)=@t; GO

  4. شغل الاستعلام في الخطوة 2 مره أخرى. في هذه المرة ، يقوم الاستعلام بإرجاع صف واحد فقط.

  5. قم بتشغيل الاستعلام التالي لحذف الفهرس والجدول الذي انشاته:DROP INDEX IX_testTimeZones_Dto ON #TestTimeZones; GO DROP TALBE #TestTimeZones; GO

المراجع

للحصول علي مزيد من المعلومات حول الدالتين CAST و CONVERT ، انتقل إلى موقع MSDN التالي علي الويب:

معلومات عامه حول الدالتين CAST و CONVERT في SQL Server

الحالة

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

هل تحتاج إلى مزيد من المساعدة؟

الخروج من الخيارات إضافية؟

استكشف مزايا الاشتراك، واستعرض الدورات التدريبية، وتعرف على كيفية تأمين جهازك، والمزيد.