none
מידע משתבש ב- Transactional Replication RRS feed

  • שאלה

  • שלום.

    צריכה עזרה בפתרון בעיה מוזרה ב- Transactional Replication.

    אני מנסה ליצור רפליקציה, שתכניס מידע מטבלה מסוימת שיושבת בשני שרתי DB שונים (לצורך העניין- T1 ו- T2 באותו מבנה בדיוק), לתוך שתי טבלאות זהות (במבנה ולא בשם) - בשרת אחר.
    כלומר: 2 publishers שהולכים ל- 2 subscribers באותו DB, באופן הבא:
    Server1 --> Distributor1 --> Publisher1
    Server2 --> Distributor2 --> Publisher2

    Server3 --> Subscriber1 from Publisher1
    Server3 --> Subscriber2 from Publisher2

    לאחר בדיקות מקיפות אנחנו נתקלים בבאג מאוד מוזר, שבו המידע ממש "מתבלבל" בין טבלאות ה- destination.
    כלומר: המידע שנכנס ל- T1 (בתוך Server1) מגיע בסופו של דבר לטבלה של Subscriber2.
    כמו כן, המידע שנכנס ל- T2 (בתוך Server2) יגיע גם כן לטבלה של Subscriber2.
    כאילו, לאחר ה- snapshot הראשוני שנוצר בזמן יצירת הרפליקציה (ועובר בהצלחה, אגב), אין יותר נגיעה ב- Subscriber1.

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

    תודה.

    יום רביעי 20 יוני 2012 14:48

תשובות

  • בדיוק.

    בהגדרות של כל Article (טבלה) יש לך אפשרות של איך לרפלק inserts/updates/deletes. בכולם תבחרי להשתמש בפקודה (נניח insert) במקום פרוצדורות.

    אמור לפתור לך את הבעיה.

    יום שני 25 יוני 2012 07:23
    מנחה דיון

כל התגובות

  • את משתמשת בפרוצדורות להכנסה או פקודות ישירות?

    אם פרוצדורות תנסי פקודות ישירות ותגידי אם זה עובד.

    אם לא - תריצי פרופיילר ותראי מה מורץ מכל אחד מה-Agents.

    יום רביעי 20 יוני 2012 18:56
    מנחה דיון
  • הי.

    תודה על התגובה המהירה.
    אני משתמשת בפרוצדורות, כי זו הברירת מחדל בזמן הגדרת הרפליקציה.
    אכן בעזרת הפרופיילר הבנתי שהבעיה היא שיש בעצם 2 subscribers תחת אותו DB ואז נוצרת רק פרוצדורה אחת לעדכון המידע (האחרונה שיצרתי).
    כלומר: בזמן יצירת ה- subscriber השני, זה פשוט דורס את הפרוצדורות הראשונות.

    אשמח לדעת איך אני יכולה ליצור את זה אחרת (עם פקודות ישירות), כך שלכל subscriber ב- DB הזה יהיו פקודות משלו.

    תודה.

    יום שני 25 יוני 2012 07:20
  • בדיוק.

    בהגדרות של כל Article (טבלה) יש לך אפשרות של איך לרפלק inserts/updates/deletes. בכולם תבחרי להשתמש בפקודה (נניח insert) במקום פרוצדורות.

    אמור לפתור לך את הבעיה.

    יום שני 25 יוני 2012 07:23
    מנחה דיון
  • עובד כמו קסם!

    המון תודה :)

    יום שלישי 26 יוני 2012 07:37
  • סבבה.

    את מוזמנת לסמן את התגובה כתשובה.

    יום שלישי 26 יוני 2012 07:38
    מנחה דיון