أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

إن المستعرض الذي تستخدمه غير معتمد

إنك تحتاج إلى تحديث المستعرض لاستخدام الموقع.

التحديث إلى أحدث إصدار من Internet Explorer

كيفية حل مشاكل حظر التي تنتج عن تأمين التصعيد في SQL Server

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية323630
الموجز
تأمين تصعيد عملية تحويل العديد من عمليات التأمين تفصيلية (مثل تأمين الصف أو الصفحة) إلى تأمين الجدول. Microsoft SQL Server بشكل حيوي يحدد عند تنفيذ التصعيد التأمين. عند اتخاذ هذا القرار ، تأخذ SQL Server في حساب لعدد عمليات التأمين يتم احتجاز على فحص معينة عدد التأمينات التي تم إجراؤها من قبل المعاملة بأكملها ثم الذاكرة قيد الاستخدام التأمينات في النظام ككل. عادةً ما ينتج السلوك الافتراضي SQL Server التصعيد تأمين التي تحدث فقط عند هذه النقطة فإنه تحسين الأداء أو عندما يجب تقليل ذاكرة تأمين النظام زائدة إلى مستوى أكثر معقولة. ومع ذلك، قد يؤدي تشغيل تصميمات بعض التطبيقات أو الاستعلام التصعيد تأمين في وقت غير مطلوباً عندما و تأمين الجدول escalated قد يمنع المستخدمين الآخرين. تتناول هذه المقالة كيفية تحديد ما إذا كان التصعيد تأمين تسبب حظر وكيفية التعامل مع التصعيد تأمين غير مرغوب فيها.
معلومات أخرى

كيفية تحديد ما إذا كان تصعيد تأمين يسبب التأمين

لا يؤدي تأمين التصعيد لمعظم المسائل حظر. لتحديد ما إذا كان التصعيد تأمين حدوث حول الوقت عندما تواجه مشكلات حظر بدء تتبع منشئ ملفات التعريف SQL يتضمن الحدث تأمين: تصعيد. إذا لم تشاهد أية أحداث تأمين: تصعيد لا يتم حدوث تأمين التصعيد على الملقم الخاص بك لا يتم تطبيق المعلومات الموجودة في هذه المقالة بما يتناسب مع الموقف الذي تواجهه.

في حالة حدوث تأمين تصعيد ، تحقق من حظر تأمين الجدول escalated المستخدمين الآخرين.

للحصول على مزيد من المعلومات حول كيفية تعريف حظر الإطارات الرأس وكيفية تحديد مورد تأمين يتضمنها الرأس حظر الإطارات بحظر الأخرى عملية الخادم معرفات (SPID) ، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
224453فهم وحل مشاكل حظر 2000 أو SQL Server 7.0
في حالة التأمين بحظر للمستخدمين الآخرين أي شيء آخر غير تأمين (مستوى جدول) TAB مع وضع تأمين S (المشترك) أو X (حصري) ، التصعيد تأمين غير المشكلة. بشكل خاص، في حالة تأمين TAB تأمين هدف (مثل وضع تأمين IS أو IU IX) ، ليس هذا هو نتيجة تأمين التصعيد. إذا كان في مشاكل حظر يتم حدوث تأمين تصعيد ، راجع المقال Q224453 للحصول على خطوات لاستكشاف الأخطاء وإصلاحها.

كيفية منع تصعيد تأمين

هو طريقة أبسط و الأكثر أمناً لمنع تأمين التصعيد للاحتفاظ المعاملات قصيرة لتقليل أثر تأمين استعلامات تكلفة بحيث لا يتم تجاوز عتبات التصعيد التأمين. هناك عدة طرق للحصول على هذا الهدف العديد من حيث يتم سرد:
  • فصل عن عمليات دفعية الكبيرة إلى عدة عمليات أصغر. على سبيل المثال، افترض أن قمت بتشغيل الاستعلام التالي لإزالة السجلات القديمة ألف مائة العديد من جدول تدقيق ومن ثم تم العثور عليه أن ذلك بسبب تصعيد تأمين منع مستخدمين آخرين:
    DELETE FROM LogMessages WHERE LogDate < '2/1/2002'						
    قبل إزالة هذه السجلات بضع hundred في وقت ، يمكنك بشكل كبير تقليل عدد التأمينات التي تتراكم لكل معاملة ومنع التصعيد التأمين. على سبيل المثال: delete_more
    SET ROWCOUNT 500delete_more:     DELETE FROM LogMessages WHERE LogDate < '2/1/2002'IF @@ROWCOUNT > 0 GOTO delete_moreSET ROWCOUNT 0
  • تقليل أثر تأمين الاستعلام عن طريق إجراء الاستعلام الفعّال إلى حد ممكن. عمليات التفحص كبير أو عدد كبير من الأبحاث Bookmark قد يؤدي إلى زيادة فرصة التصعيد تأمين; بالإضافة إلى ذلك، فإنه إلى زيادة فرصة deadlocks ويؤثر بشكل عام يؤثر التزامن والأداء. بعد العثور على الاستعلام الذي يؤدي تأمين تصعيد ، seeks ابحث عن فرص إنشاء الفهارس الجديدة أو لإضافة أعمدة إلى فهرس موجود لإزالة عمليات التفحص الفهرس أو الجدول ثم لزيادة الكفاءة الفهرس. خذ بعين الاعتبار لصق الاستعلام في إطار استعلام "محلل استعلام" لتنفيذ تحليل فهرس تلقائي عليه. للقيام بذلك، في القائمة استعلام انقر فوق معالج ضبط الفهرس في SQL Server 2000 أو انقر فوق تنفيذ تحليل الفهرس في SQL Server 7.0.

    هدف واحد تحسين الأداء هذا هو لجعل فهرس seeks بإرجاع صفوف أقل عدد ممكن لتقليل تكلفة الأبحاث Bookmark (تكبير selectivity الفهرس من أجل استعلام معين). إذا تقدير SQL Server قد لموفر خدمة إنترنت (عامل تشغيل منطقي بحث Bookmark) بإرجاع صفوف كثيرة, فإنه قد تستخدم الإحضار المسبق لإجراء البحث الإشارة المرجعية. إذا استخدام SQL Server الإحضار المسبق بحث الإشارة مرجعية, يجب زيادة مستوى عزل المعاملة من جزء من الاستعلام repeatable قراءة جزء من الاستعلام. وهذا يعني أن ما قد يتشابه عبارة SELECT مستوى عزل الالتزام القراءة قد الحصول على العديد من آلاف مفتاح تأمين (في كل فهرس متفاوت المسافات فهرس nonclustered واحد) ، الذي يمكن أن يؤدي استعلام تجاوز عتبات التصعيد تأمين. هذا مهم بشكل خاص إذا وجدت أن تأمين escalated تأمين جدول مشتركة التي على الرغم من ذلك، يتم غير شائع مشاهدة مستوى العزل الالتزام القراءة الافتراضي. إذا تسبب عبارة "الإحضار Bookmark بحث WITH المسبق" في التصعيد ، بعين الاعتبار إضافة أعمدة إضافية إلى فهرس nonclustered الذي يظهر في الفهرس في "البحث عن" أو العامل المنطقي "الفهرس التفحص" أدناه عامل التشغيل المنطقي "بحث إشارة مرجعية" في خطة الاستعلام. من الممكن إنشاء فهرس covering (فهرس يتضمن كافة الأعمدة في جدول المستخدمة في الاستعلام) أو الأقل فهرس الذي يغطي الأعمدة التي تم استخدامها معايير الضم أو في جملة WHERE إذا بما في ذلك كل ما في القائمة تحديد أعمدة عملياً.

    يمكن أيضاً استخدام صلة "المتداخل حلقة" الإحضار المسبق و يؤدي نفس السلوك التأمين.

    لمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
    260652صلة حلقة المتداخلة يستخدم "LOOKUP الإشارة المرجعية.. .WITH الإحضار المسبق" قد اضغط تأمين أطول
  • لا تحدث التصعيد تأمين حالياً تحتضن SPID مختلفة على تأمين جدول غير متوافقة. escalates التصعيد تأمين إلى تأمين جدول وإلى عدم تأمين الصفحة. بالإضافة إلى ذلك، في حالة فشل محاولة تصعيد تأمين لأن SPID آخر يحتوي على تأمين TAB غير متوافق الاستعلام الذي حاول التصعيد لا يمنع أثناء انتظار تأمين TAB. بدلاً من ذلك، يستمر في الحصول على تأمين مستوى به الأصلي, المحبب أكثر (الصف أو مفتاح أو الصفحة) ، حاول إجراء التصعيد إضافية بشكل دوري. لذلك، أسلوب واحد لمنع التصعيد تأمين على جدول محدد هو الحصول على للاحتفاظ تأمين على اتصال آخر غير متوافق مع نوع تأمين escalated. لا تؤمّن تأمين IX (هدف خاص) مستوى الجدول أية صفوف أو صفحات ولكن كان لا يزال غير متوافق مع S escalated (المشترك) أو X تأمين TAB (خاص). على سبيل المثال، افترض أنه يجب تشغيل مهمة دفعي بتعديل عدد كبير من الصفوف في جدول mytable و التي تسبب حظر التي تحدث بسبب تصعيد التأمين. في حالة اكتمال هذه المهمة دوماً في أقل من ساعة التي قد بإنشاء مهمة SQL للعمليات التي تحتوي على التعليمة البرمجية التالية ثم جدولة مهمة جديدة لبدء عدة دقائق قبل وقت البدء مهمة الدفعي:
    BEGIN TRANSELECT * FROM mytable (UPDLOCK, HOLDLOCK) WHERE 1=0WAITFOR DELAY '1:00:00'COMMIT TRAN				
    هذا الاستعلام تكتسب و يحتفظ على تأمين IX على mytable لمدة ساعة واحدة مما يمنع تأمين التصعيد على الجدول أثناء هذا الوقت. لا يؤدي هذه الدفعة إلى تعديل أي بيانات أو حظر الأخرى الاستعلامات (إلا إذا فرض الاستعلام الأخرى تأمين جدول مع تلميح TABLOCK أو إذا قام مسؤول بتعطيل تأمين الصفحة أو صف باستخدام sp_indexoption الإجراء المخزن).
بالإضافة إلى ذلك، يمكنك تعطيل التأمين التصعيد بتمكين تتبع العلامة 1211. ومع ذلك، تعطيل هذه العلامة تتبع كافة التصعيد تأمين بشكل عمومي في مثيل SQL Server. يخدم التصعيد تأمين غرض مفيدة جداً في SQL Server بواسطة تكبير الكفاءة استعلامات وإلا يتم بطيئة بواسطة مقدار الحمل الحصول و تحرير الآلاف العديد من عمليات التأمين. تأمين التصعيد أيضاً يساعد لتقليل الذاكرة المطلوبة لمتابعة تعقب عمليات التأمين. الذاكرة التي يمكن تخصيص ملقم SQL بشكل حيوي بنيات تأمين محدد, حتى إذا قمت بتعطيل التصعيد تأمين والذاكرة تأمين يزداد حجم كبير بما فيه الكفاية قد تفشل محاولات لتخصيص تأمين إضافية لـ أي استعلام و حدوث الخطأ التالي:

1204 خطأ: الخطورة: حالة 19 ،: 1
لا يمكن الحصول على SQL Server مورد LOCK في هذا الوقت. أعد تشغيل العبارة الخاصة بك عند وجود عدد أقل من المستخدمين النشطة أو اطلب من مسؤول النظام التحقق من تكوين SQL Server تأمين والذاكرة.
ملاحظة عند حدوث خطأ "1204" إيقاف معالجة العبارة الحالية ويؤدي الاستعادة من المعاملات النشطة. الاستعادة نفسها قد حظر المستخدمين أو يؤدي إلى وقت استرداد قاعدة بيانات طويلة إذا أعدت تشغيل خدمة SQL Server.

استخدام تلميح تأمين مثل ROWLOCK إلى تبديل خطة تأمين الأولي فقط. لا تمنع تلميحات تأمين التصعيد التأمين.

الطرق الأخرى من منع التصعيد تأمين التي تمت مناقشتها في هذه المقالة هي أفضل الخيارات من تمكين العلامة التتبع. بالإضافة إلى ذلك، أساليب أخرى بشكل عام ينتج أداء أفضل الاستعلام من تعطيل التصعيد تأمين المثيل بالكامل. توصي Microsoft تمكين هذه العلامة التتبع لتقليل حظر الجسيمة التي تحدث بسبب تصعيد تأمين أثناء الخيارات الأخرى مثل تلك discussed مسبقًا في هذه المقالة يتم الآن التحقق. لتمكين علامة تتبع بحيث يتم تشغيله عندما SQL Server تشغيل ، إضافته على أنه معلمة بدء تشغيل ملقم.

لإضافة معلمة بدء تشغيل ملقم انقر بزر الماوس الأيمن فوق الملقم في SQL Enterprise Manager ، انقر فوق خصائص ، ثم في التبويب عام، انقر فوق معلمات بدء التشغيل ثم قم بإضافة المعلمة التالية (تماماً كما هو موضح):
-T1211
يجب أن التنقل خدمة SQL Server للمعلمة بدء تشغيل جديدة نافذة المفعول. في حالة تشغيل الاستعلام التالي في "استعلام محلل" إشارة تتبع ساري المفعول فوراً:
DBCC TRACEON (1211, -1)				
ولكن, إذا لم تقم بإضافة -T1211 المعلمة بدء التشغيل تأثير الأمر traceon يتم فقدها عند cycled خدمة SQL Server. تشغيل إشارة تتبع يمنع أي escalations تأمين المستقبلية ولكن لا إجراء أي escalations تأمين التي حدثت بالفعل في إحدى معاملات نشطة.

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 323630 - آخر مراجعة: 02/22/2007 22:15:37 - المراجعة: 10.3

  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • kbmt kbinfo KB323630 KbMtar
تعليقات
>.microsoft.com/ms.js'><\/script>"); >&t=">