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

كيفية استكشاف أخطاء أداء استعلامات Ad-Hoc في SQL Server

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

اضغط هنا لرابط المقالة باللغة الانجليزية243588
الموجز
توضح هذه المقالة كيفية استكشاف أخطاء أداء بطيء العديد من استعلامات مؤقتة المتزامنة في Microsoft SQL Server. إذا لم تحديد مصدر المشكلة دقيق ، راجع المقالة التالية في قاعدة معارفMicrosoft قبل المتابعة:
224587كيفية استكشاف أخطاء أداء التطبيق مع ملقم SQL

تفترض هذه المقالة استخدام 224587 كيلوبايت لتضييق نطاق المشكلة ومن أن التقاط سجل مراقب أداء Windows NT منشئ ملفات التعريف SQL تتبع تلك التفاصيل أعمدة العدادات الأحداث والبيانات معينة.

الصفات المميزة مشكلات الأداء

لديه مشكلة الأداء الصفات المميزة التالية:
  • استعلامات مؤقتة قصيرة بشكل مثالي على مدة قصيرة جداً ينتج بطء أداء النظام ككل عند تشغيل عدد كبير من المستخدمين المتزامنين الاستعلامات.
  • عالي جداً أو 100 النسبة المئوية استخدام CPU.
  • لا يوجد المقترنة حظر أثناء فترات بطء الأداء.

    يمكنك البحث بسرعة عن حظر عن طريق التحقق من العمود BLK في إخراج إجراء النظام المخزن sp_who. يتم حظر إذا لم يكن العمود BLK صفر لعدد من عملية النظام معرفات (SPID).
  • في بعض الحالات، stressed ذاكرة الملقم ثم قد تتلقى أخطاء مشابهة الأخطاء التالية:
    701 خطأ: الخطورة: حالة 17 ،: 1
    توجد ذاكرة كافية لتشغيل هذا الاستعلام.
    - أو -
    msg 8645 ، التسوية 17 حالة 1 "أو" إجراء "أو" خط 1
    حدث انقضاء مهلة أثناء انتظار موارد الذاكرة لتنفيذ الاستعلام. إعادة تشغيل الاستعلام.

تحسينات في compilations الاستعلام

بسبب من التحسينات في هندسة نظام تشغيل في SQL Server 7.0 بشكل خاص للمحسن الاستعلام قد تلاحظ اختلاف في استخدام موارد النظام بواسطة التطبيقات مقارنة إصدارات SQL Server. وبوجه خاص، قد SQL Server 7.0 تظهر زيادة في استخدام CPU أو الذاكرة ولكن يتم عادةً القرص إصدارات SQL Server IO منضم. تتبعها هذه التغييرات إلى العوامل اثنين:
  • صلات التجزئة والدمج
  • مرات التحويل البرمجي الاستعلام
الإصدارات السابقة من SQL Server relied بشكل كامل على تكرار حلقة المتداخلة لتنفيذ صلات. صلات حلقة المتداخلة بالأصل؛ استخدام قرص الإدخال/الإخراج. بدءاً من SQL Server 7.0 تم تقديم الصلات التجزئة والدمج. الصلات التجزئة والدمج الكثير من الميزات في الذاكرة معالجة من الصلات حلقة المتداخلة. محصلة المنطقية ذلك CPU ويتم استخدام الذاكرة أعلى عند استخدام هذه التقنيات الصلة. لمزيد من المعلومات حول الصلات التجزئة والدمج راجع المواضيع "فهم انضمام تجزئة" و "فهم انضمام دمج" في SQL Server 7.0 المباشرة.

تتأثر مرات التحويل البرمجي الاستعلام بسبب للمحسن الاستعلام مزيد من المعلومات المتوفرة في الإصدارات السابقة من SQL Server, بما في ذلك تقنيات الصلة التجزئة والدمج جديدة البحث المحسن خوارزميات وإحصائيات العمود وخيارات. يسمح هذا معلومات إضافية للمحسن الاستعلام لتحديد أسلوب الأكثر كفاءة لاسترداد بيانات الاستعلام. ومع ذلك، يتطلب التحليل وإلغاء اعتبار هذه تقنيات جديدة ومعلومات وقت المعالجة. قد يؤدي استخدام CPU زيادة هذا الاستعلام التحويل البرمجي مرات أطول من الإصدارات السابقة من SQL Server.

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

تطوير استعلامات بمعلمات

يستخدم SQL Server 7.0 عدة تقنيات جديدة مثل التخزين المؤقت مؤقتة الاستعلامات و parameterization التلقائي. ومع ذلك، الاستعلامات التي SQL Server 7.0 parameterizes تلقائياً محددة. استخدم الطرق التالية للتأكد من أن خطط استعلام يتم تعيين معلمات للمجموعة يمكن إعادة استخدامها بشكل أكثر فاعلية:
  • علامات المعلمة OLE DB و ODBC APIs تسمح معلمات يجب تحديد مع علامة استفهام عندما يقوم المستخدمون بإرسال استعلامات. يمكن أن يكون هذا مفيدًا في أي تطبيق خاصة من أجل التطبيقات الطبقة المتوسطة التي تملك الوحدات النمطية إنشاء الاستعلام حيث باستخدام الإجراءات المخزنة غير متوفر. يمكن إعادة استخدامها خطة الاستعلام الذي تم إنشاؤه من أجل الاستعلامات التي تحتوي على علامات المعلمة قبل أي عملاء تنفيذ نفس الاستعلام حتى إذا تم تحديد قيم معلمات مختلفة. لمزيد من المعلومات، راجع الموضوع "معلمة علامات" في SQL Server 7.0 الكتب عبر إنترنت.
  • sp_executesql يتم استدعاء الإجراء sp_executesql تخزينها بواسطة موفر OLE DB أو برنامج تشغيل ODBC عند استخدام المعلمة علامات في أحد تطبيقات. ومع ذلك، فإنه يمكن أيضاً استدعاء مباشرة بواسطة التطبيق أو في إجراء مخزن آخر parameterize استعلامات المؤقتة بشكل واضح. يمكن أن يكون هذا مفيدًا في تطبيقات أو الملفات الدفعية حيث يتم استخدام عبارة EXECUTE تنفيذ عبارات SQL ديناميكية. بعكس sp_executesql لا يسمح عبارة EXECUTE parameterization. وهذا يحصر فرصة إعادة استخدام خطة الاستعلام. لمزيد من المعلومات، راجع "sp_executesql (T-SQL)" و "استخدام sp_executesql" المواضيع في SQL Server 7.0 المباشرة.
  • الإجراءات المخزنة الإجراءات المخزنة أن يكون لديك العديد من المزايا بما في ذلك القدرة على parameterize استعلامات وإعادة استخدامها خطط التنفيذ. لمزيد من المعلومات، راجع المواضيع "إجراءات مخزنة" و "برمجة إجراءات مخزنة" في SQL Server 7.0 المباشرة.

عرض بيانات "مراقبة الأداء"

استخدام سجل "مراقبة الأداء" لتحديد موارد النظام التي تتسبب في اختناق. سجل "مراقبة الأداء" يمكن منح صورة الكلي لنظام والمساعدة في التركيز اهتمامك عند عرض البيانات SQL منشئ ملفات التعريف. مراجعة بيانات "مراقبة الأداء" من الوقت عندما تم جيدة خلال الوقت الذي تقليل أداء الأداء. تحديد العداد التي تم تتأثر أولاً ومن ثم تحديد أي من المشكلات التالية هي الأكثر صلة بما يتناسب مع الموقف الذي تواجهه:
  • كائن: معالجة
    العداد: المعالج
    مثيل: SQL Server
  • كائن: المعالج
    العداد: % لزمن المعالج
    مثيل: تدقيق كل مثيل المعالج
  • الكائن: إدارة المخزن المؤقت: ملقم SQL
    العداد: المخازن المؤقتة حرة
  • الكائن: إدارة المخزن المؤقت: ملقم SQL
    العداد: سرقة عدد الصفحات
  • الكائن: إدارة الذاكرة: ملقم SQL
    الذاكرة العداد: منح المعلقة
  • الكائن: إحصائيات الملقم: SQL SQL
    SQL العداد: مجموعات/الثانية
إذا كان استخدام CPU مجموعات SQL في الثانية و بمخازن حرة عدادات يتم مرتفعاً الذاكرة منح معلقة وإعادة سرقة عدد الصفحات العدادات انخفاض ، يشير ذلك إلى أن CPU اختناق. التركيز على كيفية parameterize وإعادة الاستعلام خطط تجنب التكلفة إنشاء خطة الاستعلام بشكل فعال ثم راجع قسم "مجموعة التتبع منشئ ملفات التعريف SQL بواسطة فئة الحدث" من هذه المقالة. إذا "بمخازن حرة" والعدادات مجموعات SQL في الثانية منخفضة ويتم عالية عدادات سرقة عدد الصفحات و الذاكرة منح معلقة ، SQL Server مقيدة الذاكرة. التركيز على البحث عن استعلامات حيث يتم استخدام الصلات التجزئة و يمكن أن تتغير حلقة الصلات ومشاهدة "تجميع تتبع منشئ ملفات التعريف SQL حسب المدة" قسم من هذه المقالة. لمزيد من المعلومات حول هذه العدادات استخدام اسم العداد للبحث في SQL Server 7.0 المباشرة.

عرض بيانات SQL منشئ ملفات التعريف

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

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

يجب أيضاً التركيز على مناطق ظهور الفائدة معظم. تساعد زيادة أداء التطبيق العوامل التالية ولكن ليس بالضرورة إلى نفس درجة. قبل تطبيق أية تغييرات تحدد طريقة فعالة التغييرات قد يكون معتمداً على العوامل التالية:
  • تكرار تشغيل الاستعلام
  • تحسين مدى يمكن تحسين الاستعلام
على سبيل المثال، تقليل وقت تنفيذ استعلام واحد من 1.5 ثانية إلى ثانية 1.2 قد لا يكون مفيداً إذا لم يتم تنفيذ الاستعلام بشكل متكرر طوال اليوم. ومع ذلك، في حالة تنفيذ الاستعلام بشكل متكرر جدًا بواسطة عدد كبير من المستخدمين المتزامنين "، يمكن تحسين الأداء فعالة جداً. وعلى العكس، تحسين استعلام واحد من 6 دقائق إلى 3 ثوان قد لا العائد زيادة ملحوظًا في الأداء الكلي إذا نادراً ما يتم استخدامه. استخدام التقنيات في منشئ ملفات التعريف SQL و معرفتك التطبيق التجميع والتصفية لتقدير تأثيرات استعلام معين أو إجراء قبل تطبيق أية تغييرات. التركيز على التغييرات الأكثر فعالية أولاً ومن ثم تابع تكرار خلال الاستعلامات والإجراءات الأخرى حتى تصل إلى مستوى حيث تم تحسين الأداء بشكل كاف.

بعد حفظ تتبع منشئ ملفات التعريف SQL إلى ملف أو جدول إعادة فتح التتبع في منشئ ملفات التعريف SQL ثم مراجعة المحتويات. لتجميع التتبع منشئ ملفات التعريف SQL اتبع الخطوات التالية:
  • تجميع تتبع منشئ ملفات التعريف SQL حسب المدة:
    1. من القائمة ملف، انقر فوق خصائص.
    2. انقر فوق علامة التبويب أعمدة البيانات ومن ثم ضمن مجموعات انقر فوق لأعلى لنقل المدة. انقر فوق لأسفل إلى إزالة كافة الأعمدة الأخرى.
    3. انقر فوق علامة التبويب الأحداث ثم قم بإزالة كافة الأحداث باستثناء SQL:StmtCompleted TSQL و RPC TSQL: اكتمل. يسمح هذا التركيز على الاستعلامات التي هي قيد التنفيذ.
    4. انقر فوق موافق.
    التجميع حسب المدة يسمح بسهولة رؤية SQL عبارات دفعات والإجراءات التي تعمل بنظام التشغيل slowest. مراجعة التتبع عند حدوث المشكلة وإنشاء أساس أداءً جيداً. يمكنك التصفية حسب وقت البدء فصل التتبع إلى مقاطع عندما يكون أداء المقاطع جيدة و منفصلة عند رديئة الأداء. ابحث عن الاستعلامات مع مدة أطول عندما يكون أداء جيد. هذه هي الأكثر احتمالاً الجذر المشكلة. عند انخفاض مستوى أداء النظام ككل استعلامات جيدة حتى يمكنك إظهار المدد الزمنية الطويلة لأن انتظار موارد النظام.

    مراجعة خطط التنفيذ للاستعلامات أن معظم أن المدد طويلة بشكل متكرر. إذا كنت ترى قيد الاستخدام صلة تجزئة حاول استخدام تلميح الاستعلام JOIN LOOP فرض صلة متداخلة حلقة للاستعلام. في حالة وقت تنفيذ الاستعلام باستخدام صلة حلقة أقل من أو يساوي أو أكبر قليلاً حتى وقت تنفيذ مع صلة التجزئة ، قد صلة حلقة خيار أفضل إذا كان الكمبيوتر يواجه الذاكرة العليا واستخدام CPU. عن طريق تخفيض الضغط على اختناق المورد (الـ CPU والذاكرة) ، يمكنك تحسين أداء النظام ككل. للحصول على مزيد من المعلومات حول JOIN LOOP للاستعلام تلميح, راجع الموضوع "SELECT (T-SQL)" في SQL Server 7.0 المباشرة.
  • تجميع تتبع منشئ ملفات التعريف SQL حسب فئة الحدث:
    1. من القائمة ملف، انقر فوق خصائص.
    2. انقر فوق علامة التبويب أعمدة البيانات ومن ثم تحت العنوان "المجموعات" ، انقر فوق لأعلى لنقل فئة الحدث "و" نص مع فئة الحدث في الأعلى. انقر فوق لأسفل إلى إزالة كافة أعمدة أخرى ضمن عنوان المجموعات.
    3. انقر فوق علامة التبويب الأحداث ثم تأكد من أن يتم تضمين كافة الأحداث.
    4. انقر فوق موافق.

أنواع الأحداث

لمشاهدة يتم حدوث ما هي أنواع الأحداث على الكمبيوتر الذي يقوم بتشغيل SQL Server و وعدد الأحداث التي تحدث التجميع حسب العمود فئة الحدث. البحث في هذا العمود عن الأحداث التالية:
  • MISC: إعداد SQL و Exec تحضير SQL; المؤشرات: Cursorprepare أحداث إعداد SQL تشير إلى أنه تم تحضيرها عبارة SQL لاستخدامها مع مجموعة نتائج افتراضي (مؤشر من جانب العميل) باستخدام SQLPrepare/SQLExecute (لـ ODBC) أو ICommandText::Prepare/ICommandText::Execute (لـ OLE DB) مع خيارات رأس المؤشر الافتراضي: للأمام فقط، للقراءة فقط, حجم مجموعة الصفوف = 1. حدث Cursorprepare يشير إلى أن مؤشر من جانب الملقم قد تم تحضيرها على SQL تعيين العبارة استخدام SQLPrepare/SQLExecute (لـ ODBC) أو ICommandText::Prepare/ICommandText::Execute (لـ OLE DB) مع واحد خيارات رأس المؤشر السابق إلى قيمة غير افتراضي. الإشارة إلى حدث SQL تحضير Exec تم تنفيذ أي من الأنواع السابقة من عبارات المعدة الموجودة. إذا كنت ترى متكررة تواجدات هذه الأحداث التطبيق الخاص بك يستخدم طراز تحضير/التنفيذ عند فتحه النتيجة مجموعات. إذا كان الأمر كذلك، يجب عليك تحديد إذا كنت تستخدم طراز تحضير/التنفيذ بشكل صحيح.

    وبشكل مثالي، تطبيق بتحضير عبارة SQL مرة واحدة ثم تنفيذ عدة مرات عليه بحيث لا يلزم للمحسن ترجمة مخطط جديد كل مرة يتم تنفيذ العبارة. كل مرة تقوم فيها بتشغيل عبارة معدة حفظ تكلفة التحويل البرمجي الاستعلام. إذا كنت تنوي فقط تنفيذ استعلام مرة واحدة توصي Microsoft أن لا التحضير عليه. يتم الآن التحضير وتنفيذها عبارة SQL يتطلب ثلاث الشبكة roundtrips: أحد لتحضير العبارة أحد تنفيذ العبارة و أحد unprepare العبارة. التحضير مؤشرات من جانب الملقم يتطلب خمس الأقل trips الدورة: واحد لتحضير المؤشر أو واحد تنفيذ أو فتحه أو واحد أو أكثر إحضار منه ، لإغلاقه وآخر unprepare عليه. تنفيذ الاستعلام يتطلب المرور به واحد فقط.

    لمشاهدة كيفية بفاعلية التطبيق الخاص بك يستخدم طراز تحضير/التنفيذ قارن عدد مرات هذه الأحداث بين (تحضير والتنفيذ) تحدث. يجب أن يكون عدد الأحداث SQL تحضير Exec أكبر من إجمالي إعداد SQL والأحداث CursorPrepare (ثلاثة على الأقل إلى خمس مرات أكبر تقدير جيد). يشير هذا إلى أن تقوم عبارات المعدة يتم يتم استخدامها بشكل متكرر كافية تجاوز في زيادة مقدار الحمل إنشائها. في حالة تقريباً مساوية إلى عدد الأحداث SQL تحضير Exec عدد الأحداث إعداد SQL و CursorPrepare قد يشير هذا إلى أن التطبيق لا بفاعلية تستخدم طراز تحضير/التنفيذ. حاول إعداد عبارة مرة واحدة ثم إعادة استخدامه قدر الإمكان. يمكنك أيضاً تغيير التطبيق الخاص بك تحضير عبارات مرة واحدة وإعادة استخدامها تلك العبارات.

    يجب كتابة التطبيق بشكل خاص لاستخدام طراز تحضير/التنفيذ بشكل فعال. ويرتبط عمر مؤشر إلى عبارة معدة المدة تحتفظ في HSTMT مفتوحة في ODBC "أو" كائن ICommandText في OLE DB. ممارسة الشائعة واحد هي الحصول على HSTMT تحضير عبارة SQL تنفيذ جملة المعدة ومن ثم تحرير HSTMT مع فقدان المقبض خطة المعدة. في حالة القيام بذلك، لا تظهر أية فائدة من الطراز تحضير/التنفيذ. في الحقيقة، قد ترى تدهور أداء نتيجة حمل إضافي roundtrips شبكة الاتصال. يجب أن يحتوي التطبيق على طريقة تخزين HSTMT أو كائن بواسطة مؤشر عبارة المعدة الوصول إليها لإعادة الاستخدام. برنامج التشغيل أو الموفر لا هذا تلقائياً; التطبيق مسؤولة عن تطبيق الحفاظ على استخدام هذه المعلومات. إذا كان التطبيق لا يمكن القيام بذلك، يمكنك استخدام علامات المعلمة بدلاً من أسلوب تحضير/التنفيذ.
  • باستخدام علامات المعلمة يمكن للتطبيقات استخدام علامات المعلمة لتحسين استخدام عبارة SQL للعمليات نفسه عدة مرات مع إدخال مختلفة وقيم الإخراج. في المرة الأولى التي يتم تنفيذ استعلام يتم تحضير كاستعلام معلمات و SQL Server بإنشاء وتخزين خطة ذات معلمات الاستعلام. للمكالمات اللاحقة نفس الاستعلام باستخدام إما المعلمات نفس أو مختلفة SQL Server لم يكن لإنشاء مخطط استعلام جديد; يمكن SQL Server من إعادة استخدام خطة الاستعلام الموجودة عن طريق استبدال معلمات الحالية.

    إذا كان التطبيق يستخدم المعلمة علامات مع مكالمات SQLExecDirect (لـ ODBC) أو ICommandText::Execute (لـ OLE DB) ، برنامج التشغيل أو موفر تلقائياً حزم عبارة SQL ثم تنفيذ كاتصال sp_executesql. ليس لدى العبارة تحضير ويتم تنفيذها بشكل منفصل. عندما يتلقى SQL Server استدعاء sp_executesql ، فإنه تلقائياً بالتحقق من ذاكرة التخزين المؤقت الإجراء خطة مطابقة reuses ذلك الخطة أو بإنشاء مخطط جديد.

    لتحديد ما إذا كان التطبيق يستخدم علامات المعلمة حالياً البحث عمود نص في تتبع منشئ ملفات التعريف SQL للحصول على "sp_executesql." ومع ذلك، لأنه قد يتم استدعاء sp_executesql مباشرة, لا كافة المثيلات تشير إلى استخدام علامات المعلمة.

    للحصول على مزيد من المعلومات حول نموذج تحضير/التنفيذ راجع الموضوع "إعادة تنفيذ خطة التخزين المؤقت ثم استخدام" في SQL Server 7.0 المباشرة. لمزيد من المعلومات حول علامات المعلمة راجع الموضوع "معلمة علامات" في SQL Server 7.0 المباشرة.
  • SP: اكتمل عبارات SQL ديناميكية تنفيذها بواسطة الأمر EXECUTE تظهر كـ SP: اكتمل الحدث مع النص "SQL ديناميكية." قم بتوسيع SP: اكتمل الحدث ومن ثم ابحث عن أي التواجدات التي لها "SQL ديناميكي" مثل النص. إذا كان هناك العديد من هذه الأحداث, قد يمكنك تحسين أداء التطبيق باستخدام sp_executesql بدلاً من عبارة EXECUTE. يسمح الإجراء sp_executesql تخزين SQL Server إعادة استخدام خطط التنفيذ في حالة تنفيذ نفس الاستعلام مرة أخرى باستخدام معلمات مختلفة. عند استخدام عبارة EXECUTE ذات معلمات الخطة لا ثم يتم لا استخدامها إلا إذا تم تنفيذ الاستعلام مرة أخرى باستخدام نفس المعلّمات.

    لتحديد الاستعلامات أو الإجراءات التي تستخدم أحداث SQL ديناميكية التنفيذ عبارة "و" ملاحظة معرف الاتصال "و" وقت بدء لكل حدث. فك تجميع التتبع (إزالة فئة الحدث ونص من عنوان المجموعات). بعد فك تجميع التتبع يتم فرز في ترتيب زمني. يمكنك التتبع بواسطة "معرف الاتصال" (على علامة التبويب عوامل) تصفية وإعادة قم بإزالة كافة فئات الأحداث فيما عدا SP: بدء و SP: اكتمال أحداث زيادة قابلية القراءة. ثم يمكنك البحث عن "وقت بدء" الحدث (في القائمة تحرير ، انقر فوق بحث). إظهار النتائج عند بدء الحدث SQL ديناميكية. إذا وقع الحدث في إجراء مخزن يظهر الحدث بين SP: بدء و SP: اكتمل أحداث ذلك الإجراء. إذا لم يحدث الحدث في إجراء مخزن ، تم تنفيذ كاستعلام مؤقتة ويمكن استخدام بيانات الأعمدة الأخرى (اسم التطبيقاسم مستخدم NT و الآخرين) لتحديد حيث تم تنفيذ الأمر. لتحديد نص الأمر والسياق حيث تم تنفيذ ذلك يمكن إضافة فئات الأحداث مثل SQL:BatchCompletedSQL:RPCCompleted.

    بعد تحديد من حيث استخدام عبارة EXECUTE ضع في الاعتبار استبدال استدعاء sp_executesql. على سبيل المثال، اطلع على السيناريو التالي حيث EXECUTE استخدام الأمر مع SQL ديناميكية. إجراء تأخذ اسم الجدول "و" معرف "و" idValue كمعلمات الإدخال لها ثم تنفيذ عبارة SELECT من الجدول استناداً إلى قيمة معرّف. باستخدام عبارة EXECUTE ، الإجراء يبدو مشابهاً التعليمة البرمجية التالية:
    drop proc dynamicUsingEXECUTE		  go create proc dynamicUsingEXECUTE @table sysname, @idName varchar(10),		  @idValue varchar(10) as declare @query nvarchar(4000) -- Build query string		  with parameter. -- Notice the use of escape quotes. select @query = 'select *		  from ' + @table + ' where ' + @idName + ' = ''' + @idValue + '''' exec (@query)		  go
    مع افتراض أن ذات الاستعلام يتم تلقائياً معلمات ، إذا تنفيذ هذا الإجراء مقابل جدول titles (العناوين) في قاعدة بيانات نموذج pubs (الناشرون) مرتين مع قيم مختلفة @ idValue المعلمة SQL Server يجب إنشاء خطة استعلام منفصل لكل للتنفيذ. على سبيل المثال:
    exec dynamicUsingEXECUTE		  'titles', 'title_id', 'MC2222' go exec dynamicUsingEXECUTE 'titles',		  'title_id', 'BU7832'
    ملاحظة في هذا المثال، الاستعلام أمراً بسيطاً بما يكفي أن SQL Server يمكن تلقائياً parameterize وإعادة فعلياً خطة التنفيذ. ومع ذلك، إذا كان هذا استعلام معقد قد parameterize SQL Server تلقائياً SQL Server قد لا إعادة خطة التنفيذ الثاني إذا @ idValue تم تغيير معلمة. استعلام بسيط التالية الحد تعقيد المثال.

    يمكن إعادة كتابة هذا الإجراء لاستخدام sp_executesql بدلاً من عبارة EXECUTE. يجعل دعم استبدال المعلمة sp_executesql أكثر فعالية لأن يقوم بإنشاء خطط التنفيذ من أكثر من المحتمل إعادة استخدام بواسطة SQL Server. على سبيل المثال:
    drop proc dynamicUsingSP_EXECUTESQL go create proc		  dynamicUsingSP_EXECUTESQL @table sysname, @idName varchar(10), @idValue		  varchar(10) as declare @query nvarchar(4000) -- Build query string with		  parameter select @query = 'select * from ' + @table + ' where ' + @idName + ' =		  @idValue' -- Now execute with parameter exec sp_executesql @query, N'@idValue		  varchar(10)', @idValue go exec dynamicUsingSP_EXECUTESQL 'titles', 'title_id',		  'MC2222' go exec dynamicUsingSP_EXECUTESQL 'titles', 'title_id',		  'BU7832'
    في هذا المثال، في المرة الأولى تنفيذ عبارة sp_executesql SQL Server بإنشاء خطة ذات معلمات عبارة SELECT من العناوين باستخدام title_id (معرف_العنوان) كمعلمة. للتنفيذ الثاني reuses SQL Server خطة بواسطة قيمة المعلمة. لمزيد من المعلومات حول sp_executesql راجع "sp_executesql (T-SQL)" و "استخدام sp_executesql" المواضيع في SQL Server 7.0 المباشرة.
  • SP:RECOMPILES يشير هذا الحدث إلى أنه تم إجراء مخزن recompiled أثناء التنفيذ. أحداث ترجمة كثيرة يشير إلى أن SQL Server يستخدم موارد لتصنيف استعلام بدلاً من تنفيذ الاستعلام.
إذا لم تشاهد أي من هذه الأحداث التطبيق تنفيذ استعلامات مؤقتة مقابل SQL Server. يتطلب كل استعلام يتم تنفيذ SQL Server إنشاء خطة تنفيذ جديدة ما لم يحدد SQL Server فإنه يمكن parameterize بعض الاستعلامات تلقائياً أو إذا تم استخدام نفس المعلّمات بشكل متكرر. يجب على مراقب أداء ملقم SQL إظهار مجموعات العديد من SQL في الثانية. يمكن أن يكون هذا CPU المكثفة للعديد من المستخدمين المتزامنة. كمحاولة للتغلب على هذه المشكلة ابحث عن معظم الاستعلامات التي تم تنفيذها بشكل متكرر ثم إنشاء الإجراءات المخزنة هذه الاستعلامات باستخدام علامات المعلمة أو باستخدام sp_executesql.
مراجع
لمزيد من المعلومات حول المراقبة واستكشاف الأخطاء وإصلاحها مشاكل الأداء في SQL Server "، انقر فوق أرقام المقالات التالية لعرضها في" قاعدة المعارف لـ Microsoft:
224587كيفية استكشاف أخطاء أداء التطبيق مع ملقم SQL
224453فهم INF: وحل مشاكل حظر 2000 أو SQL Server 7.0
243586استكشاف الأخطاء وإصلاحها recompilation إجراء مخزن
243589كيفية استكشاف أخطاء الاستعلامات تشغيل بطيء على SQL Server 7.0 أو الإصدار الأحدث
251004INF: كيفية مراقبة حظر SQL Server 7.0
kbSQLServ2000Sweep التالفة رديئة بطيء sluggish kbswept perfmon mon perf

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

خصائص

رقم الموضوع: 243588 - آخر مراجعة: 12/08/2005 14:19:39 - المراجعة: 5.4

Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 64-bit Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Standard Edition

  • kbmt kbhowtomaster kbhowto kbinfo KB243588 KbMtar
تعليقات
=">cript> >guagesListForLargeScreens track by $index" class="col-sm-6 col-xs-24 ng-scope"> España - Español
Paraguay - Español
Venezuela - Español
/c1.microsoft.com/c.gif?DI=4050&did=1&t=">id=1&t="> var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("