none
יצירת קבצי TRACE RRS feed

  • שאלה

  • שלום לכולם

    במקום עבודתי קיימים מספר שרתי SQL ואני מעוניין לנטר את השגיאות, נעילות (blocked process threshold = 1) ופעולות ארוכות מעל 20 שניות.

    לשם כך כתבתי את הפרוצדורה הבאה:

    CREATE proc [dbo].[sp_runtrace]
    as
    declare @trace_id int, @on bit, @ret int,
    	@tracefile nvarchar (500) 
    	select @tracefile = convert (varchar (32), getdate(), 120) + 'tr'
    	set @tracefile = replace (@tracefile, ' ', '')
    	set @tracefile = replace (@tracefile, ':', '')
    	set @tracefile = replace (@tracefile, '-', '')
    	set @tracefile = N'd:\Trace\trace_' + @tracefile
    	print @tracefile
    begin try
    exec sp_trace_create  @trace_id output
              ,  @options =  2
    	      ,  @tracefile =  @tracefile
    
    set @on = 1
    
    -- Exceptions
    exec sp_trace_setevent @trace_id, 33, 1, @on
    exec sp_trace_setevent @trace_id, 33, 6, @on
    exec sp_trace_setevent @trace_id, 33, 8, @on
    exec sp_trace_setevent @trace_id, 33, 13, @on
    exec sp_trace_setevent @trace_id, 33, 14, @on
    exec sp_trace_setevent @trace_id, 33, 35, @on
    exec sp_trace_setfilter @trace_id, @columnid = 35, @logical_operator = 0, @comparison_operator = 0
              , @value = N'mokeddarom'
    SELECT @trace_id
    
    
    -- Blocking
    exec sp_trace_setevent @trace_id, 137, 1, @on
    exec sp_trace_setevent @trace_id, 137, 6, @on
    exec sp_trace_setevent @trace_id, 137, 8, @on
    exec sp_trace_setevent @trace_id, 137, 13, @on
    exec sp_trace_setevent @trace_id, 137, 14, @on
    exec sp_trace_setevent @trace_id, 137, 35, @on
    
    -- Long opertaions
    declare @duration bigint
    select @duration = 20000000
    exec sp_trace_setevent @trace_id, 12, 1, @on
    exec sp_trace_setevent @trace_id, 12, 6, @on
    exec sp_trace_setevent @trace_id, 12, 8, @on
    exec sp_trace_setevent @trace_id, 12, 13, @on
    exec sp_trace_setevent @trace_id, 12, 14, @on
    exec sp_trace_setevent @trace_id, 12, 35, @on
    exec sp_trace_setfilter @trace_id, @columnid = 13, @logical_operator = 0, @comparison_operator = 2
              , @value = @duration
    
    exec sp_trace_setstatus @trace_id, 1
    exec sp_procoption 'sp_runtrace', 'startup', 'true'
    end try
    begin catch
    	declare @err varchar (1000)
    	select @err = 'ERROR_PROCEDURE = ' + ERROR_PROCEDURE() +  char(10) + 
    			' error_line = ' + str(error_line ()) +   char(10) + 
    			' error_number = ' + str(error_number ()) +   char(10) + 
    			' error_message = ' + error_message ()
    	print @err
    end catch
    return
    
    
    GO
    
    EXEC sp_procoption N'[dbo].[sp_runtrace]', 'startup', '1'
    
    GO
    

    כפי שרואים בסוף הקוד, הפרוצדורה אמורה לעלות בעת אתחול של SQL. 

    הפעלתי את הפרוצדורה הזו בשני שרתים, באחד מהם אני מקבל את המעקב כמצופה, אם אני יוזם נעילות או פעולות ארוכות, הן משתקפות בקבצי ה TRACE. לעומת זאת, בשרת שני מתברר שלמרות שה TRACE נוצר, השורות הרלוונטיות אינן נכתבות לקבצי ה TRACE.

    שני השרתים הם SQL 2005.

    היכן ניתן להתחיל לחפש רנז להבדל בין השרתים?

    בתודה מראש

    אריה


    אריה שטרן

    יום שני 30 אפריל 2012 06:24

תשובות

  • הי אריה,

    הגדרת פילטר סטטי על N'mokeddarom'

    האם בשני השרתים אתה מצפה לקבל את הערך הזה?

    עמי


    Ami Levin, SQL Server MVP. CTO, DBSophic LTD. - http://www.dbsophic.com/ --Performance is the most significant driver in maintaining data and service availability.--

    • סומן כתשובה על-ידי Meir DudaiModerator יום שני 30 אפריל 2012 20:43
    יום שני 30 אפריל 2012 07:54
  • הי אריה,

    מכיוון שאתה מריץ את אותה פרוצדורה בדיוק בשני שרתים שונים, ושניהם SQL Server 2005, זה מוזר שאתה לא מקבל את אותה התנהגות.

    אבל הנה כמה כיוונים שכדאי לבדוק:

    1. האם השרתים זהים מבחינת ה-Build של SQL Server? מה ה-Build של כל אחד מהם?

    2. האם השרתים זהים מבחינת החומרה (CPU, זיכרון, דיסקים)?

    3. כדאי לחפש הבדלים ב-sys.configurations בין שני השרתים. ספציפית, כדאי להשוות את הפרמטרים הבאים:

         - affinity mask

         - cost threshold for parallelism

         - max degree of parallelism

         - min server memory (MB)

         - max server memory (MB)

         - blocked process threshold (s)

    4. בשרת הבעייתי - איך אתה יודע שה-Trace נוצר? האם משהו בכלל נכתב לקובץ ה-Trace או שהקובץ נשאר ריק? האם הקובץ נוצר בכלל?

    בהצלחה!

    גיא גלנצר
    יועץ ומדריך SQL Server
    Madeira - SQL Server Services
    http://www.madeira.co.il

    • סומן כתשובה על-ידי Meir DudaiModerator יום שני 30 אפריל 2012 20:42
    • סימון כתשובה בוטל על-ידי Meir DudaiModerator יום שני 30 אפריל 2012 20:43
    • סומן כתשובה על-ידי Meir DudaiModerator יום שני 30 אפריל 2012 20:43
    יום שני 30 אפריל 2012 08:06
    מנחה דיון

כל התגובות

  • בהודעה הקודמת, לקראת הסוף, נפלה טעות בהקלדה:

    צ"ל

    היכן ניתן להתחיל לחפש רמז להבדל בין השרתים?


    אריה שטרן

    יום שני 30 אפריל 2012 06:25
  • הי אריה,

    הגדרת פילטר סטטי על N'mokeddarom'

    האם בשני השרתים אתה מצפה לקבל את הערך הזה?

    עמי


    Ami Levin, SQL Server MVP. CTO, DBSophic LTD. - http://www.dbsophic.com/ --Performance is the most significant driver in maintaining data and service availability.--

    • סומן כתשובה על-ידי Meir DudaiModerator יום שני 30 אפריל 2012 20:43
    יום שני 30 אפריל 2012 07:54
  • הי אריה,

    מכיוון שאתה מריץ את אותה פרוצדורה בדיוק בשני שרתים שונים, ושניהם SQL Server 2005, זה מוזר שאתה לא מקבל את אותה התנהגות.

    אבל הנה כמה כיוונים שכדאי לבדוק:

    1. האם השרתים זהים מבחינת ה-Build של SQL Server? מה ה-Build של כל אחד מהם?

    2. האם השרתים זהים מבחינת החומרה (CPU, זיכרון, דיסקים)?

    3. כדאי לחפש הבדלים ב-sys.configurations בין שני השרתים. ספציפית, כדאי להשוות את הפרמטרים הבאים:

         - affinity mask

         - cost threshold for parallelism

         - max degree of parallelism

         - min server memory (MB)

         - max server memory (MB)

         - blocked process threshold (s)

    4. בשרת הבעייתי - איך אתה יודע שה-Trace נוצר? האם משהו בכלל נכתב לקובץ ה-Trace או שהקובץ נשאר ריק? האם הקובץ נוצר בכלל?

    בהצלחה!

    גיא גלנצר
    יועץ ומדריך SQL Server
    Madeira - SQL Server Services
    http://www.madeira.co.il

    • סומן כתשובה על-ידי Meir DudaiModerator יום שני 30 אפריל 2012 20:42
    • סימון כתשובה בוטל על-ידי Meir DudaiModerator יום שני 30 אפריל 2012 20:43
    • סומן כתשובה על-ידי Meir DudaiModerator יום שני 30 אפריל 2012 20:43
    יום שני 30 אפריל 2012 08:06
    מנחה דיון
  • אבדוק את הפילטר הסטטי הזה

    תודה


    אריה שטרן

    יום שני 30 אפריל 2012 08:19
  • תודה לכולם

    התבלבלתי בפילטר

    אבל "לא הביישן למד"


    אריה שטרן

    יום רביעי 02 מאי 2012 13:22