it-swarm.asia

إعلام حول استعلام طويل الأمد أو حالة توقف تام في SQL Server 2008 R2؟

أود أن أعرف ما إذا كانت هناك طريقة لإرسال إشعار بشأن حالة الجمود؟ إذا كان الأمر كذلك ، ما هي الاستفسارات المطلوبة. أفهم أن SQL Server يتعامل مع حالات الجمود ، أود ببساطة الحصول على معلومات حول الاستعلامات المعنية.

لقد وجدت ما يلي لتحديد الاستفسارات طويلة الأمد:

SELECT 
    creation_time
    ,last_execution_time
    ,total_physical_reads
    ,total_logical_reads
    ,total_logical_writes
    , execution_count
    , total_worker_time
    , total_elapsed_time
    , total_elapsed_time / execution_count avg_elapsed_time
    ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
    ((CASE statement_end_offset
        WHEN -1 THEN DATALENGTH(st.text)
        ELSE qs.statement_end_offset END
    - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st  
where total_elapsed_time >= 300000000 --5 min
ORDER BY total_elapsed_time / execution_count DESC; 

أود أن أعرف ما إذا كان ما سبق هو الطريق الصحيح للذهاب أم أن هناك طريقة أفضل لتحديد ما إذا كان أي استعلام يستغرق وقتًا أطول من فاصل زمني محدد يقول 5 دقائق كما هو موضح؟

شكر

15
Hasanain

مع SQL 2008 ، هناك ميزة جديدة يمكنك استخدامها في حالة الجمود والتطلعات الطويلة: الأحداث الموسعة . الأحداث الموسعة هي كائنات منخفضة المستوى وتستهلك موارد أقل بكثير من الطرق الأخرى مثل التنميط/التتبع والتنبيهات وما إلى ذلك.

لاستخدام الأحداث الموسعة مع deadlocks تحقق من هذا منشور بواسطة Jonathan Kehayias ، خادم SQL MVP.

لاستخدام الأحداث الموسعة للعثور على long running queries ، تحقق من هذا المفصل نشر بواسطة Pinal Dave ، خادم SQL آخر MVP.

8
StanleyJohns

يمكنك تكوين التنبيهات لكليهما باستخدام SQL Agent. قم بإنشاء تنبيه جديد وحدد النوع "تنبيه حالة أداء SQL Server"

للاستعلامات الطويلة ، اختر كائن "MSSQL $ InstanceName: المعاملات" والعداد: أطول وقت تشغيل للمعاملة. قم بتكوين القيم وخيارات تنبيه التنبيه ، وأنت على ما يرام.

في حالة توقف تام ، يكون الكائن هو "MSSQL $ InstanceName: Locks" والعداد هو "عدد حالات توقف تام في الثانية"

إذا كنت تريد المزيد من التحكم الدقيق في إخطار الطريق المسدود ، تحقق من ذلك: http://www.sqlservercentral.com/articles/Administration/3243/

10
FortyNine

أنا أفضل اقتراح ستانلي جونز إذا كان لديك SQL2008. الأحداث الممتدة تستحق التعرف عليها كأداة تشخيصية و Jonathon An XEvent a Day تعتبر السلسلة مكانًا رائعًا للبدء.

البديل عن حالة توقف تام هو تمكين علامات التتبع 1204 و 1222 ، والتي تفريغ معلومات حالة توقف تام إلى سجل أخطاء SQL. قم بتمكين كلاهما ، حتى تحصل على المعلومات بتنسيقين مختلفين ، مما يسهل عليك فهم سلاسل حالة الجمود المعقدة.

4
Mark Storey-Smith