الأعراض
يرجى مراعاة السيناريو التالي:
-
يتم تكوين ملقم مرتبط بين خادم محلي وأن كلا من Microsoft SQL Server 2012 مثيلات خادم بعيد.
-
تم تكوين الملقم المحلي باستخدام ترتيب واحد، مثل ترتيب تحسس حالة الأحرف.
-
على الملقم البعيد بكائن الذي تم تكوينه في ترتيب مختلف من الملقم المحلي، مثل ترتيب تحسس حالة الأحرف.
-
يتم إجراء اتصال من برنامج تشغيل Microsoft JDBC ل SQL Server، برنامج تشغيل ODBC ل Microsoft SQL Server أو موفر OLE DB ل SQL أو "عميل SQL الأصلي" إلى الملقم المحلي.
-
تنفيذ برنامج تشغيل SQL لاستعلام تحديث كعبارة معدّة التي تستدعي الإجراء sp_prepexec المخزنة على الملقم المحلي.
-
تحديث الاستعلام جدول على الملقم البعيد. يتضمن هذا كائن عمود يستخدم ترتيب مختلف من الملقم المحلي.
في هذا السيناريو، قد تواجه الأداء البطيء لتنفيذ الاستعلام. إذا قمت بتحديد خطة تنفيذ استعلام التحديث، قد تجد أنه يتم تنفيذ تفحص بعيد على الجدول في الملقم البعيد بدون إجراء تصفية. لذلك، قد تنفيذ الاستعلام ما يلي العديد من عند فحص جدول بعيد ثم يسترد كافة الصفوف إلى الملقم المحلي.
على سبيل المثال، على استعداد الاستعلام على الملقم المحلي له الترتيب الافتراضي متحسسة لحالة الأحرف، وكان الملقم البعيد جدول T1 يحتوي على عمود حساسة لحالة الأحرف. التحديث سوف تفحص كافة الصفوف T1.
DECLARE @p1 INTEXEC sp_prepexec @p1 output, N'@P0 NVARCHAR(16), @P1 NVARCHAR(16)',
N'UPDATE RemoteServer.RemoteDatabase.dbo.T1 SET COL1=@P0 WHERE COL2=@P1',
N'a', N'a'
SELECT @p1
السبب
تحدث هذه المشكلة لأن تفحص استعلام التحديث المعد جدول بعيد عندما لا يطابق الترتيب على خادمي.
الحل
بعد تثبيت الإصلاح الجديد، تحتاج إلى تمكين تتبع العلامة 4199 على الخادم المحلي الذي يستضيف ملقم مرتبط. كيفية تمكين في تراسيفلاج، الرجاء الرجوع إلى قسم معلومات أكثر.
ملاحظة: الإصلاح العاجل ينطبق فقط على الملقم المحلي الذي يستضيف ملقم مرتبط وتحسين البيانات المعدة. لا ينطبق هذا الإصلاح العاجل على الملقم البعيد.
تم تصحيح هذه المشكلة أولاً في التحديث التراكمي التالية من SQL Server.
6 التحديث التراكمي ل SQL Server 2012 SP1/en-us/help/2874879
يحتوي التحديث التراكمي كل جديدة ل SQL Server على كافة الإصلاحات العاجلة وكافة إصلاحات الأمان التي تم تضمينها مع التحديث التراكمي السابق. تحقق من أحدث التحديثات التراكمية ل SQL Server:
معلومات الإصلاح العاجليتوفر إصلاح عاجل معتمد من Microsoft. ومع ذلك، يهدف هذا الإصلاح العاجل إلى حل المشكلة الموضحة في هذه المقالة فقط. تطبيق هذا الإصلاح العاجل فقط على الأنظمة التي تواجه هذه المشكلة بالتحديد.
إذا كان يتوفر الإصلاح العاجل للتنزيل، يوجد مقطع "توفر تنزيل الإصلاح عاجل" أعلى مقالة قاعدة المعارف. إذا لم يظهر هذا المقطع، إرسال طلب إلى خدمة العملاء ل Microsoft والدعم للحصول على الإصلاح العاجل.
ملاحظة: في حالة حدوث مشكلات إضافية أو يجب إجراء استكشاف للأخطاء وحلها، قد يلزم إنشاء طلب خدمة منفصل. سيتم تطبيق تكاليف الدعم المعتادة على أسئلة الدعم الإضافية والمشكلات التي لا يعمل على حلها هذا الإصلاح العاجل بالتحديد. للحصول على قائمة أرقام هواتف خدمة العملاء ل Microsoft والدعم أو لإنشاء طلب خدمة منفصل، قم بزيارة موقع Microsoft التالي على الويب:
http://support.microsoft.com/contactus/?ws=supportملاحظة: يعرض النموذج "توفر تنزيل الإصلاح العاجل" اللغات التي يتوفر الإصلاح الجديد. في حالة عدم ظهور اللغة الخاصة بك، يكون بسبب عدم توفر إصلاح عاجل لتلك اللغة.
المتطلبات الأساسيةلتطبيق هذا الإصلاح العاجل، يجب عليك تثبيت SQL Server 2012.
معلومات التسجيلليس لديك لتغيير التسجيل بعد تطبيق هذا الإصلاح العاجل.
معلومات استبدال الإصلاح العاجللا يحل هذا الإصلاح العاجل محل أية إصلاحات عاجلة أخرى.
الحالة
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "ينطبق على".
الحل البديل
لكي يعمل تكثر هذه المشكلة، استخدم إحدى الطرق التالية:
-
لا تستخدم البيانات المعدة في مصدر التعليمات البرمجية للتطبيق العميل. يمكنك استخدام القوائم المخصصة أو بيانات الاستدعاء مثل الإجراءات المخزنة بدلاً من ذلك إذا كان برنامج التشغيل يدعم هذه الواجهات.
-
استخدام ترتيب النسخ المتطابقة على خادمي.
مزيد من المعلومات
لتمكين تتبع العلامة، إضافة معلمات بدء التشغيل -T4199 أو DBCC TRACEON(4199,-1) قبل أن يتم ترجمة البيان المعد لتمكين السلوك.
يمكنك استخدام إحدى الطرق التالية لتمكين تتبع العلامة:
-
قبل بدء تشغيل SQL Server، إدارة التكوين الخاصة ب Microsoft SQL Server استخدام زر الماوس الأيمن فوق مثيل المتأثرة وإضافة معلمات بدء التشغيل -T4199 حيث أن يستمر في ذلك عبر عمليات إعادة التشغيل وكافة الاتصالات إلى المثيل في المستقبل.
-
تمكين الإعداد في وقت التشغيل بمجرد الحصول على بدء تشغيل الخدمة، وعلى الصعيد العالمي لكافة اتصالات "(-1) بشكل حيوي." تأكد من تحرير إجراء التخزين المؤقت إذا كنت تخطط للقيام بالاختبار بتشغيل أو إيقاف تشغيل رمز التبديل.
استخدم الأمر التالي لتمكين الإعداد على المستوى العالمي وبشكل حيوي:
DBCC TRACEON(4199,-1)DBCC TRACESTATUS(-1)
DBCC FREEPROCCACHE
استخدم الأمر التالي لتعطيل الإعداد عالمياً وبشكل حيوي:
DBCC TRACEOFF(4199,-1)DBCC TRACESTATUS(-1)
DBCC FREEPROCCACHE