none
שגיאה 1222 RRS feed

  • שאלה

  • שלום לכולם

    במספר שרתים קורה שאני מקבל צרורות של הודעת שגיאה 1222. (יש לי מעקב אחרי הודעות שגיאה). מתברר גם שבמשתמשים מתלוננים על תקיעות בזמנים שאני רואה את ההודעות האלו.

    מה משמעות הודעה זו וכיצד אני יכול לאתר את הגורם לה?

    תודה

    אריה


    אריה שטרן

    יום ראשון 29 ספטמבר 2013 10:16

תשובות

  • הי אריה,

    במקום לנטר את כל הפעילות בשרת, אתה צריך להיות יותר ממוקד ולנטר רק את הפקודות שרצות בשרת ולא מסתיימות. לשם כך גדאי להשתמש ב-Pair Matching Target כחלק מ-Extended Event Session.

    הנה קוד ליצירת Event Session כזה:

    CREATE EVENT SESSION
    	MonitorTimeOutErrors
    ON
    	SERVER
    ADD EVENT
    	sqlserver.sql_statement_starting
    (
    	ACTION
    		(
    			sqlserver.session_id ,
    			sqlserver.tsql_stack
    		)
    ) ,
    ADD EVENT
    	sqlserver.sql_statement_completed
    (
    	ACTION
    		(
    			sqlserver.session_id ,
    			sqlserver.tsql_stack
    		)
    )
    ADD TARGET
    	package0.pair_matching
    		(
    			SET
    				begin_event				= N'sqlserver.sql_statement_starting' ,
    				begin_matching_actions	= N'sqlserver.session_id , sqlserver.tsql_stack' ,
    				end_event				= N'sqlserver.sql_statement_completed' ,
    				end_matching_actions	= N'sqlserver.session_id , sqlserver.tsql_stack'
    		);
    GO
    
    
    ALTER EVENT SESSION
    	MonitorTimeOutErrors
    ON
    	SERVER
    STATE = START;
    GO
    

    בהצלחה!

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


    • הוצע כתשובה על-ידי pituachMVP, Editor יום שלישי 15 אוקטובר 2013 15:37
    • סומן כתשובה על-ידי pituachMVP, Editor יום ראשון 20 אוקטובר 2013 08:25
    יום שלישי 15 אוקטובר 2013 15:29
    מנחה דיון

כל התגובות

  • הי אריה,

    נשמח לקבל קצת יותר מידע על הסביבה והבעיה המדויקת
    מה גרסת השרת?
    מה השגיאה המדוייקת?

    לא בטוח שמדובר באותה בעיה אבל זה התיעוד לשגיאה 1222
    http://technet.microsoft.com/en-us/library/aa337412(v=sql.105).aspx

    לפי זה מדובר בנעילות

    מקווה שעזרתי,
    נועם

    יום ראשון 29 ספטמבר 2013 10:54
  • נועם

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

    אריה


    אריה שטרן

    יום ראשון 29 ספטמבר 2013 11:45
  • צוהריים טובים אריה,

    אני ממליץ לוותר על שלב הניחושים אם כי יש חידונים ותחרויות יפות בסגנון זה. בוא ננסה לעבוד בצורה יותר מקצועית... אחרי הכל חבל על הזמן שלנו לקחת חלק בתחרות כשאין פרסים בתחרות הזו. נסה ללכת בכיוון שנועם התחיל בו וספק לנו יותר פרטים בבקשה כדי שנוכל לעזור לך (כמו שאומרים "עזור לנו לעזור לך")

    1. אנא צרף את הודעת השגיאה המדוייקת המלאה

    2. ספק את גרסת השרת המלאה המדוייקת. אתה יכול להעזר בשאילתה הבאה לצורך כך

    select @@VERSION

    3. נסה לפרט מה בדיוק אתם מנסים להריץ כשהשגיאה עולה. אם אפשר ספק DDL+DML רלוונטי וכמה שיותר מידע על התהליכים המקבילים שניראים לך קשורים

    * בעקרון זו חזרה על הבקשה של נועם, רק בפירוט מעט להבהרה :-)


    [Personal Site] [Blog] [Facebook]signature

    יום ראשון 29 ספטמבר 2013 12:55
    מנחה דיון
  • היי אריה,

    יש Set Option בשם Lock_Timeout, שגורמת להחזרת שגיאה אחרי זמן מסוים שה-Session נעול:

    http://technet.microsoft.com/en-us/library/ms189470.aspx

    האם יכול להיות שאתם משנים את ערך ברירת המחדל ולכן אתם חוטפים את השגיאה?

    בברכה,

    מתן


    My Blog

    יום ראשון 29 ספטמבר 2013 13:52
  • תודה לכל העונים

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

    אריה


    אריה שטרן

    יום שני 30 ספטמבר 2013 05:37
  • אני לא מבין מה הקשר לשרת עמוס ולנתונים שהיתבקשת לספק, לפחות את 2 הנתונים הראשונים אתה יכול לספק תוך כמה שניות אם אתה רוצה. הודעת השגיאה נמצאת בלוגים ואם אתה רוצה אז אתה יכול לשחזר את השגיאה ולראות את ההודעה ב ALERT. כמו כן גרסת שרת לוקח פחות משנייה אחת להריץ שאילתה פשוטה של מילה אחת ולהביא את הנתון...

    ביחד זו עבודה של 2-3 שניות בשרת הכי עמוס (כל הוא מחובר לחשמל ודולק כמובן... זה התנאי היחיד)

    בנתיים אנשים ממשיכים במשחקי הניחוש וחבל (לדעתי האישית זו טעות וביזבוז זמן בשלב זה בלי נתונים מינימאליים)


    [Personal Site] [Blog] [Facebook]signature

    יום שני 30 ספטמבר 2013 06:01
    מנחה דיון
  • הי אריה,

    יש חדש?

    נשמח לשמוע עדכון...

    תודה!

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

    יום שני 07 אוקטובר 2013 04:21
    מנחה דיון
  • שלום ותודה לכולם

    שמתי פרופיילר לטווח יחסית ארוך.

    מקווה לחזור בהקדם עם תוצאות.


    אריה שטרן

    יום שני 07 אוקטובר 2013 08:53
  • בכיף :-)

    נשמח לשמוע תוצאות

    * קח בחשבון שהמשאבים שדורש הפרופיילר יכולים להיות מאוד גדולים! כדאי להיות קצת זהיר עם הפעלה שלו בשרת חי לאורך זמן, ועוד שרת שגם ככה אתה אומר שהוא עמוס.


    [Personal Site] [Blog] [Facebook]signature

    יום שני 07 אוקטובר 2013 09:38
    מנחה דיון
  • בקר טוב

    הפעלתי פרופיילר לשעתיים וקבלתי 3M שורות. קצת קשה להעלות אותם לכאן.

    ובכל זאת. השגיאה הופיעה על SPID הקטנים מ 50, מה שאומר שאלו תהליכים של SQL עצמו. בפרופיילר שלי לא ראיתי פעולות נוספות על אותם SPID לפני ואחרי הודעת השגיאה.

    במה ניתן להאחז?

    תודה

    אריה


    אריה שטרן

    יום רביעי 09 אוקטובר 2013 06:07
  • הי אריה,

    במקום לנטר את כל הפעילות בשרת, אתה צריך להיות יותר ממוקד ולנטר רק את הפקודות שרצות בשרת ולא מסתיימות. לשם כך גדאי להשתמש ב-Pair Matching Target כחלק מ-Extended Event Session.

    הנה קוד ליצירת Event Session כזה:

    CREATE EVENT SESSION
    	MonitorTimeOutErrors
    ON
    	SERVER
    ADD EVENT
    	sqlserver.sql_statement_starting
    (
    	ACTION
    		(
    			sqlserver.session_id ,
    			sqlserver.tsql_stack
    		)
    ) ,
    ADD EVENT
    	sqlserver.sql_statement_completed
    (
    	ACTION
    		(
    			sqlserver.session_id ,
    			sqlserver.tsql_stack
    		)
    )
    ADD TARGET
    	package0.pair_matching
    		(
    			SET
    				begin_event				= N'sqlserver.sql_statement_starting' ,
    				begin_matching_actions	= N'sqlserver.session_id , sqlserver.tsql_stack' ,
    				end_event				= N'sqlserver.sql_statement_completed' ,
    				end_matching_actions	= N'sqlserver.session_id , sqlserver.tsql_stack'
    		);
    GO
    
    
    ALTER EVENT SESSION
    	MonitorTimeOutErrors
    ON
    	SERVER
    STATE = START;
    GO
    

    בהצלחה!

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


    • הוצע כתשובה על-ידי pituachMVP, Editor יום שלישי 15 אוקטובר 2013 15:37
    • סומן כתשובה על-ידי pituachMVP, Editor יום ראשון 20 אוקטובר 2013 08:25
    יום שלישי 15 אוקטובר 2013 15:29
    מנחה דיון
  • תודה לכוולם

    גיא - אנסה את הצעתך.


    אריה שטרן

    יום חמישי 17 אוקטובר 2013 08:59