سؤال

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

لذلك ، استولت على بضع دقائق من التتبع. المشكلة هي أن هناك الكثير من الأشياء ، وأحتاج إلى تضييقها. إذا فعلت File -> Save As, ، أحصل على الخيارات التالية:

  • ملف تتبع ...
  • قالب تتبع ...
  • طاولة تتبع ...
  • تتبع ملف XML ...
  • تتبع ملف XML لإعادة تشغيل ...

الآن ، هذه خيارات لائقة ، لكن ما أريده حقًا هو تنسيق جدولي ، مثل CSV. أعتقد أن الفواصل في Trace من المحتمل أن تعبث تنسيق CSV. أود أن أستخدم شيئًا آخر بكل سرور ، مثل || كمحدد.

بمجرد أن أحصل على التنسيق الجدولي ، يمكنني تصفيةه باستخدامه باستخدام grep, ، وما إلى ذلك ، ثم معالجةها بسهولة مع Python لرؤية الأشياء الدقيقة التي أريدها. بدأت في تحليل ملف XML مع برنامج نصي ، لكنني وجدت نفسي أقضي وقتًا طويلاً على التتبع XML تنسيق الملف (لم تستخدم lxml مكتبة من قبل).

إذن ... هل هناك طريقة أسهل؟ هل يمكنني على الأقل نسخه إلى التفوق بطريقة ما؟

هل كانت مفيدة؟

المحلول

إذا قمت بحفظه في طاولة تتبع ؛ يمكنك الحصول على البيانات في جدول في SQL Server والتي ستتيح لك معالجةها لمحتوى قلوبك ؛ بما في ذلك التخلص منه إلى CSV إذا كان لا يزال مطلوبًا. يتم تمثيل عمود بيانات النص بالكامل في الجدول.


إذا اخترت يحفظطاولة تتبع. سيُطلب منك اسم الجدول وقاعدة البيانات. دعنا نقول أنك تسميها profilertemp في خدش قاعدة البيانات.

أدخل هؤلاء ؛ يمكنك الاستعلام عن الجدول باستخدام

select * from scratch.dbo.ProfilerTemp

سترى كل شيء في نافذة التتبع في الطاولة. إذا لم تقم بتصفية الإجراءات المخزنة فقط وتريدها فقط في الاختيار

Select textdata from [Scratch].[dbo].[ProfilerTemp] 
  where eventclass = 10 
  And textdata like 'exec %' 
  and not cast(TextData as nvarchar(max))= 'exec sp_reset_connection'

يقوم هذا بتصفية المكالمات غير الإجراءات وأي إعادة ضبط على اتصال قد تكون لديك. قد تحتاج إلى إضافة المزيد من المرشحات اعتمادًا على ما تحاول القيام به.

إذا كنت تريد هذا كملف نصي ؛ اختر الاستعلام - نتائج لتقديم وتشغيل الاستعلام. سيؤدي ذلك إلى مطالبة باسم الملف ويعطيك نص المعلمة كملف نصي.

نصائح أخرى

TL ؛ DR: انسخ إلى محرر نص ، الإعدادية يدويًا ، ثم الصق في Excel.

لديّ خبرة قليلة جدًا مع SQL Server ، لذلك لا أعرف ما إذا كان هذا سيعمل للآخرين ، لكنه فعل ذلك بالنسبة لي:

  • حدد الصفوف المطلوبة في SQL Server Profiler. CTRL + C لنسخ.
  • الصق في محرر نص عادي يمكنه القيام بالبحث العادي للتعبير والاستبدال (مثل Notepad ++ في حالتي).
  • Regex استبدال (N'(''')?[^']*?)\r\n(([^']*?)\r\n)?(([^']*?)\r\n)? مع $1 $4 $6
    • هذا يمسح جميع الخطوط الجديدة من البرامج النصية SQL.
    • استمر في القيام بـ "استبدال الكل" حتى لا يتم العثور على نتائج أخرى.
  • Regex استبدال (Batch(Starting|Completed)[^\\]*?)\r\n مع $1
    • هذا يزيل الخطوط الجديدة من المزيد من الأشياء SQL. مرة أخرى ، استمر في الاستبدال حتى لا توجد نتائج.
  • Regex استبدال \r\nset مع set
    • هذا يمسح جميع الخطوط الجديدة من البرامج النصية لتسجيل الدخول إلى التدقيق
  • قد تحتاج إلى القيام بالمزيد من الاستبدال ، ستحصل على الفكرة.
  • الصق في Excel باستخدام "معالج استيراد النص". استخدم علامات التبويب كما المحدد.
  • قم بالفرز حسب العمود الأول وإزالة أي صفوف غير مفيدة (على سبيل المثال "تدقيق تسجيل الدخول" في حالتي). قد تحتاج أيضًا إلى نقل بعض البيانات يدويًا عبر عمود (على سبيل المثال "EntityFramework" في حالتي)

كان لدي مجموعة من ملفات SQL Profiler Trace التي تحتوي على أحداث تتبع Deadlock التي كنت بحاجة إلى تحليلها. انتهى بي الأمر بتحويلها إلى ملف XML واحد باستخدام SQL Profiler ، ثم قراءة ملف XML مع Python ، باستخدام lxml و pandas المكتبات.

كما تنتهي البيانات في الباندا Dataframe, ، يمكنك بسهولة تحويله إلى CSV أو Excel أو ... أو تحليله في Python (إذا كنت على دراية بـ Pandas).

البرنامج النصي متاح كملف جوهر. إنه مكتوب خصيصًا لملفات تتبع Deadlock ، حيث لم يكن لدي أي آثار أخرى متاحة. بمعنى آخر ، قد تحتاج إلى تعديله قليلاً لتقديم هدفك. لا تقلق إذا كان ملف XML كبيرًا (عدة 100 ميغابايت) ؛ يستخدم البرنامج النصي iterparse(), ، مما يعني أنه لن يتم قراءة الملف في الذاكرة وسيتم التقاط العناصر ذات الصلة فقط. على سبيل المثال xdl ملف CA. تم تحليل 220 ميغابايت في أقل من 13 ثانية.

حفظ ملفات التتبع كـ XML (xdl امتداد):

Extract

تأكد من تحديد الخيار جميع الأحداث في ملف واحد.

Save

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top