כיצד לפתור בעיות של חיבורים מיותמים ב-SQL Server


סיכום


כאשר לקוח Microsoft SQL Server מתנתק מ-SQL Server server, תהליך החיבור אמור להיות מנוקה בצד השרת. אם תהליכי החיבור אינם מתרוקנים מסיבה כלשהי, הם הופכים לתהליכי "יתומים" או "ghost". תהליכים אלה עשויים להשתמש במשאבים יקרי-ערך כגון נעילות וחיבורי משתמשים. התהליכים היתומים נגרמים בדרך כלל על-ידי סגירה לא תקינה של יישומי לקוח ובעיות הקשורות לרשת, והתרופות דורשות בדרך כלל לפתור בעיות ביישומי לקוח ולכוונן תצורות רשת.

מידע נוסף


כאשר תפתור בעיה זו, זכור את הפרטים הבאים:
  • SQL Server כיישום אינו ואינו אמור לבדוק באופן פרואקטיבי את חיבור הלקוח כדי לקבוע את המצב הנוכחי שלו. התקשורת הבין-תהליכית של הרמה התחתונה (IPCs), כגון named pipes, IPX/SPX או TCP/IP sockets, אחראיות לניהול חיבורי הלקוח.
  • ל-IPC בדרך כלל יש מנגנון משלו לניהול חיבורי הלקוח. כאשר חיבורי לקוח אינם מגיבים לפרק זמן מסוים, בדרך כלל מחשב Windows NT Server יזהה זאת על-ידי שליחת התקשרויות "המשך חיים", או ניקוי החיבור לאחר שהוא לא פעיל למשך זמן מוגדר. עם זאת, המנות "שמור-חי" אינן נשלחות כברירת מחדל על-ידי יישום. האפליקציה צריכה להפוך תכונה זו לזמינה בחיבורים שלו.
  • תחת מצבים מסוימים, כגון תקלת הגנה כללית של הלקוח, ייתכן שהלקוח עדיין מגיב לבדיקות שרת גם אם היישום כבר מת. במקרה זה, מחשב Windows NT Server עשוי למנוע חיבור לקוח זה ללא הגבלת זמן, כל עוד הלקוח אינו כובה.
  • אם מחשב Windows NT Server אינו סוגר חיבור מת מסיבה כלשהי, SQL Server מניח בצדק שחיבור זה עדיין פעיל, ולכן אינו מנקה אותו.
  • אם מחשב Windows NT Server סגר בהצלחה את החיבור, אך תהליך הלקוח עדיין קיים ב-SQL Server כפי שמצוין על-ידי sp_who, ולאחר מכן הוא עשוי להצביע על בעיה בניהול החיבורים של SQL Server. במקרה זה, עליך לעבוד עם ספק התמיכה הראשי שלך כדי לפתור בעיה זו.
אם אתה חושד שתהליכים יתומים קיימים ב-SQL Server, להלן השלבים שניתן לנקוט כדי לפתור את הבעיה:
  1. זהה את התהליכים היתומים באמצעות sp_who, שעשויים לציין אילו יישומים המשויכים לתהליכים אלה באמצעות שמות המארחים.
  2. לאחר שתזהה תהליכים מיותמים אלה, תוכל לבחור להתעלם מהם אם הם אינם מחזיקים מנעולים או באמצעות חיבורים רבים, או להרוג אותם באמצעות הפקודה SQL Server KILL.
  3. בדוק עם משתמשי היישום עבור הליכים לא תקינים של יישומי סגירה, כגון הפעלה מחדש חמה או קרה של תחנות עבודה מבלי לצאת מהיישומים תחילה. בדוק אם קיימת היסטוריה של תחנת העבודה שהפכה לבלתי יציבה, כגון תקלת הגנה כללית, וכן הלאה. תקן את בעיות ההליכים או היציבות הפסולות אם הם קיימים.
  4. בדוק אם הפעלת IPC עדיין פעילה במחשב Windows NT Server שבו פועל SQL Server. בהתאם לIPCs שבהם אתה משתמש, הפקודות שונות. לדוגמה, אם אתה משתמש בצינורות בעלי שם, הפקודה היא "NET SESSION" או "NET FILES"; אם זהו חיבור של שקעים מסוג TCP/IP, באפשרותך להשתמש ב-NETSTAT כדי להציג הפעלות TCP פעילות; במקרה של IPX/SPX, ייתכן שיהיה עליך להשתמש בצג הביצועים כדי לנטר את הקישור "חיבורים פתוחים" עבור "NWLink SPX".
  5. אם הפעלות IPC עדיין פעילות במחשב Windows NT Server, הוא נורמלי לחלוטין עבור SQL Server כדי לשמור על תהליכי חיבור אלה. כאשר Windows NT מנקה את הפעלות IPC, SQL Server יקבל הודעה וינקה את תהליכי החיבור בהתאם. ייתכן שתוכל לכוונן פרמטרים מסוימים של רשת של Windows NT כדי לקצר את פרק הזמן שבו Windows NT צריך להמתין לפני ניקוי ההפעלות המתות. שוב, בהתאם לIPCs שבהם אתה משתמש, הפרמטרים המעורבים מאוד שונים.לקבלת מידע נוסף, לחץ על מספר המאמר הבא כיצד לשנות הגדרות רישום אלה כדי להתאים לאלה המוזכרים להלן כדי להציג את המאמר כיצד לשנות הגדרות רישום אלה כדי להתאים לאלה שצוינו להלן ב-Microsoft Knowledge Base:
    120642 פרמטרים של תצורת TCP/IP ו-NetBT עבור Windows 2000 או Windows NT
    99745 כוונון פרמטרי רישום של NWLINK
    • צינורות בעלי שם: הצינורות בעלי שם מיושמים בשכבת בלוק הודעת שרת (SMB) מעל פרוטוקולי תעבורה אחרים, כגון TCP/IP, NetBEUI או NWLink IPX/SPX. שכבה דקה שנקראת NetBIOS מיושמת בדרך כלל בין SMB לבין שכבת התעבורה. לכן, דרך נוחה לכוונן את משך הזמן שבו הפעלת צינורות בעלי שם שאינה מגיבה באופן מגיב צריכה להמתין לפני הסגירה באמצעות התאמת הפרמטרים של משך חיים של שכבת NetBIOS הרלוונטית. עבור TCP/IP, שכבת NetBIOS המעורבת היא NBT (NetBIOS באמצעות TCP), והפרמטר המעורב מSessionKeepAlive במפתח הרישום הבא:
               KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netbt\Parameters      
      אם הפרוטוקול המשמש הוא NWlink IPX/SPX, הפרמטרים המעורבים הם KeepAliveCount ו-KeepAliveTimeout במפתח הרישום הבא:
               HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWNBLink\Parameters      
      שים לב שיישומים מסוימים בעלי שם מסוימים של Named Pipes מעל NWLink עשויים לעקוף את שכבת NetBIOS (DirectHosting), כלומר, הפרמטרים שלעיל NWNBlink NetBIOS אינם חלים.
    • שקעים של TCP/IP: Windows NT Server ישלח מעת לעת "השאר מנות חיים ללקוחות ולקוחות צפויים להגיב. אם מסיבה כלשהי שהלקוח אינו מגיב למנות אלה, Windows NT מנקה את הפעלת ה-TCP לאחר שהוא מנסה לקבוע מספר פעמים מוגדר. הפרמטרים המעורבים הם KeepAliveInterval, KeepAliveTime ו-TcpMaxDataRetransmissions במפתח הרישום הבא:
               HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters      
    • IPX/SPX: בדומה ל-TCP/IP, Windows NT Server שולח מעת לעת את המנות "השאר חיים" ולקוחות מגיבים. Windows NT מנקה את חיבורי SPX אם היא אינה מקבלת תגובות לאחר שליחת מספר מוגדר של מנות "המשך בחיים". הפרמטרים המעורבים הם KeepAliveCount ו-KeepAliveTimeout במפתח הרישום הבא:
               HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWLnkSPX\Parametes      
    שים לב כי אם הפרמטרים של "שמור על חיים" עבור IPCs שלך מוגדרים לזמן קצוב לעולם, Windows NT ישמור את הפעלות IPC ללא הגבלת זמן, גם אם הלקוחות נסגרים לחלוטין. במקרה זה, SQL Server ישמור על תהליכי לקוח אלה גם כן, הצפויים. לקבלת מידע נוסף אודות הפרמטרים, עיין בתיעוד של Windows NT או בערכת משאבים של Windows NT. אם אתה חושד שמחשב Windows NT Server שלך אינו מנקה הפעלות אלה בהתאם לפרמטרי התצורה, באפשרותך לפנות לספק התמיכה הראשי של Windows NT לקבלת עזרה.
  6. אם הפעלת IPC אינה קיימת עוד במחשב Windows NT Server, אך SQL Server עדיין שומר על תהליך הלקוח כפי שמוצג על-ידי sp_who, באפשרותך להשתמש בפקודה ' הרוג ' כדי לנקות את התהליך כפתרון זמני, ולפנות לספק התמיכה הראשי של SQL Server לקבלת סיוע נוסף.
לקבלת מידע נוסף על נושא זה כפי שהוא קשור ל-SQL Server 2000, עיין בנושא "הפעלות יתומות" ב-SQL Server Books Online.