none
בעיה בעבודה עם Linked Servers RRS feed

  • שאלה

  • אהלן לכולם,

    נתקלתי בבעייה מוזרה בעת הניסיון בשימוש בLinked servers ואשמח לשמוע אם למישהו יש עוד אפשרויות למה יכולה להיות הסיבה לכך.

    אני אתחיל בתיאור הסביבות, שרת ראשון הוא פיזי ועליו מותקנים 2 instances.

    אחד SQL 2008 נקרא לו בשביל ההסבר "שרת A"  אחד SQL 2005 ובשביל ההסבר נקרא לו "שרת B". (למרות שזה אינסטנסים ולא שרתים, אני אגיד בשביל הדוגמא "שרתים").

    ישנו שרת נוסף שהוא וירטואלי ויושב על מכונה אחרת באותו הדומיין, שעליו מותקן SQL 2005 ולו נקרא "שרת C".

    עכשיו החיבורים ביניהם הם שאצל B מוגדר Linked server אל שרת A.

    ואצל C מוגדר Linked server אל שרת B. (שני השרתים הם windows 2003 sp2).

    עכשיו בשני השרתים הDTC מופעל וגם מקונפג כמו שצריך מבחינת הרשאות בcomponent services

    כמו שמוסבר כאן לדוגמא: http://www.sqlvillage.com/Articles/Distributed%20Transaction%20Issue%20for%20Linked%20Server%20in%20SQL%20Server%202008.asp

    ועכשיו מה שמבתצע זה ככה:

    כאשר אני שולף בשרת B מתוך שרת A לדוגמא אפילו SELECT 1 בOPENQUERY אז השליפה חוזרת, גם בלי BEGIN DITRIBUTED TRANSACTION וגם עם (מזכיר ששניהם נמצאים תחת אותו שרת).

    אבל כאשר אני מנסה להריץ את אותה שליפה פשוטה בשרת C שישלוף משרת B באותה הצורה אני מצליח רק כאשר אני לא נמצא בטרנזקציה מבוזרת (בלי BEGIN DITRIBUTED TRANSACTION)

    כשאני מריץ עם BEGIN DITRIBUTED TRANSACTION זה לוקח 30 שניות קודם כל, בניגוד לפחות משנייה כאשר אני לא בטרנזקציה.

    ואני מקבל את השגיאה:

    Msg 7391, Level 16, State 2, Line 2
    The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "B" was unable to begin a distributed transaction.

    אז כמו שכבר רשמתי הDTC למעלה ב2 השרתים, עשיתי לו מספר פעמים ריסטרט, השרת "C" עבר גם הוא ריסטרט.

    ובנוסף ב2 השרתים הMSDTC מקונפג כמו בלינק ששלחתי ועדיין מתקבלת השגיאה.

    למישהו יצא להיתקל במצב כזה ?

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

    תודה רבה,







    חיים פישנר.


    • נערך על-ידי haim fishner יום שלישי 22 מאי 2012 16:40
    יום שלישי 22 מאי 2012 16:38

תשובות

כל התגובות

  • שלום וברכה,

    על פי רוב הבעיה קשורה בהגדרות DTC

    במאמר הזה ניתן למצוא מה צריך לעשות על מנת ש Distributed transaction  יעבוד
    http://support.microsoft.com/kb/2027550/EN-US

     מצאתי גם את המאמר הבא שמתאר את בעיה דומה והפתרון - שווה לנסות: http://support.microsoft.com/kb/816701/EN-US

    כמו כן כמוכן האם מופיעה שגיאה נוספת לפני ההודעה הנ"ל?  נתקלתי במספר מקרים שההודעה הראשונה מרמזת יותר על הבעיה.

    בנוסף הייתי משתמש ב DTC PING  שיעזור קצת לשפוך אור על הבעיה
    פרטים נוספים כאן:

    http://support.microsoft.com/kb/918331

    http://blogs.msdn.com/b/distributedservices/archive/2008/11/12/troubleshooting-msdtc-issues-with-the-dtcping-tool.aspx

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

    נועם

    • סומן כתשובה על-ידי Eran Sharvit יום רביעי 30 מאי 2012 16:25
    יום שלישי 22 מאי 2012 21:25
  • היי נועם,

    קודם כל תודה, הורדתי את הכלי DTC PING והשתמשתי בו בסביבה אחרת בשביל להבין מה הוא תורם.

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

    הבעיה אצלי שאני כנראה לא אוכל להשתמש בו בסביבה הספציפית הזאת כי אין לי איך להכניס לרשת הזאת את הקבצים של הDTCPIng.

    אז מה שאני רוצה זה בעצם לדעת אוליי יש איך להוציא את הצ'ק ליסט שהכלי מבצע בכדי לעשות את זה ידנית דרך הCMD או משהו ?

    ואם לא את הצ'ק ליסט של הכלי, אם יש איזה צ'ק ליסט כללי בכדי לאתר בעיות ברמת הDTC בין שרתים ?

    תודה רבה!


    חיים פישנר.





    • נערך על-ידי haim fishner יום חמישי 24 מאי 2012 05:34
    יום חמישי 24 מאי 2012 05:34
  • הי חיים,

    ה DTC PING מבצע קריאות API ל DTC   לא חושב שניתן לעשות זאת ב Command line

    http://support.microsoft.com/kb/2027550/EN-US זה המאמר העקרי ששוה להתמקד בו כסוג של Check list.

    לצערי, לא מכיר כלים נוספים להתמודד עם הבעיה.

    נועם

    • סומן כתשובה על-ידי haim fishner יום רביעי 30 מאי 2012 22:34
    יום חמישי 24 מאי 2012 06:04