none
MIRROR והעברת הUSER RRS feed

  • שאלה

  • הקמתישני DBS עם MIRROR ביניהם

    לאחר מכן הקמתי משתמש ברמת ה DB, ומאחר ומבחינת ה SQL זה לא אותו אחד, מחקתי את המשתמש מה 

    DB ונתתי לו הרשאות מחדש.

    אות ודבר עשיתי במעבר ל DB השני.

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

    איך אני מייצר USER שיוכר בשני ה DBS וגם במעבר ה MIRROR ככה שלא תהיה לי בעיה?

    יום ראשון 24 יולי 2011 21:08

תשובות

  • הי פלג,

    זו בהחלט בעיה לא ברורה, באופן כללי זו לא התנהגות טבעית ולכן הייתי בודק:

    1. בשני השרתים יש אותה גירסא של SQL Server כולל Service packs וכל העידכונים.

    2. הייתי מוודא שלא נוצר אך אובייקט בבסיס הנתונים המשני אחרי ה- failover אפילו לא טבלה.

     


    אסף שלם
    • סומן כתשובה על-ידי pituachMVP, Editor יום שישי 05 אפריל 2013 19:22
    יום ראשון 23 אוקטובר 2011 14:17

כל התגובות

  • המחשבים יושבים תחת אותו דומיין?
    מה הקשר בין המחשבים?
    יום שני 25 יולי 2011 03:46
    מנחה דיון
  • אותה רשת, אין דומיין, ככה שאי אפשר להשתמש ב WIN AUTHENTICATION
    יום שני 25 יולי 2011 06:34
  • הי,

    קודם כל אתה צריך לייצר Login עבור ה- User.

    אלו השלבים:

    1. תחת תיקיית Security ב- SSMS תייצר Login ותן לו הרשאות גישה ל- DB הרלוונטי.

    2. ברמת ה- DB תן לו הרשאות ספציפיות.

    אותו כנ"ל תבצע בסביבת ה- Mirror, בדיוק אותו דבר.

    במצב הזה יהיה לך העתק של ה- Users בשתי הסביבות ולא צריכה להיות לך בעיית הרשאות.

    במידה ועדין אתה לא מצליח תוודא שאתה פתוח ברמת השרת להתחברות מרחוק.

    יום טוב,


    אסף שלם

    יום שני 25 יולי 2011 06:49
  • אסף אני חושב שהבעיה היא אחרת.

    זה בדיוק כמו שאתה עושה RESTORE ל DB שיש לו משתמשים, והם גם קיימים ברמת ה USERS של ה SQL

    הוא לא מתייחס אליהם אותם דבר, ותמיד יש צורך להקים אותם מחדש. יכול להיות שגם כאן אותו המצב?

    יום שני 25 יולי 2011 06:54
  • הבנתי את הבעיה שלך,

    יש לך User בשרת mirror עם ID של שרת principal

    אתה צריך להריץ את הפקודה sp_change_users_login עם הפרמטר Auto_Fix.

    זה כבר יעדכן את ה- ID של ה- User ב- DB על בסיס הלוגין.

    אתה יכול לקרוא על הפרוצדורה ב- books online.

    בהצלחה

     


    אסף שלם
    • הוצע כתשובה על-ידי pituachMVP, Editor יום שני 25 יולי 2011 08:10
    • סומן כתשובה על-ידי Meir Pinto יום חמישי 04 אוגוסט 2011 07:30
    • סימון כתשובה בוטל על-ידי pelegk1 יום שישי 21 אוקטובר 2011 12:14
    יום שני 25 יולי 2011 07:43
  • תודה אני אבדוק:)
    יום שני 25 יולי 2011 08:45
  • תודה אני אבדוק:)

    היי,

    אשמח אם תוכל/י לעדכן אותנו בסטטוס השאלה שלך.

     

    במידה וקיבלת תשובה מתאימה לשאלתך, יש לסמן את התשובה המתאימה ע"י לחיצה על "סמן כתשובה" ליד סימון ה V הירוק

    אם לא קיבלת תשובה, מומלץ לספק פרטים נוספים אודות הבעיה, פרטי לוג, צילומי מסך וכו'

    על מנת להעלות תמונה לפורום ניתן להעזר במדריך להעלאת תמונה.


    אם תגובתי פתרה את בעייתך - לחץ/י, על "סמן כתשובה" ליד סימן ה V הירוק.

    על מנת להעלות תמונה לפורום ניתן להעזר במדריך להעלאת תמונה
    מיקרוסופט מציעה שירות זה ללא תשלום, למטרת סיוע למשתמשים והעשרת הידע הקשור בטכנולוגיות ובמוצרים של Microsoft. תוכן זה מתפרסם כפי שהוא והוא אינו מעיד על כל אחריות מצד מיקרוסופט.
    יום רביעי 03 אוגוסט 2011 08:53
  • היי חג שמח

     

    use mydbname;

    EXEC sp_change_users_login 'Report';

    ביצעתי את זה ולא קיבלתי שום תוצאה

    גם כשניסיתי לתקן את המשתמש כמו שהצעת

       

    Exec sp_change_users_login 'Auto_Fix', ‘mysqlyusername’

    קיבלתי :

    The number of orphaned users fixed by updating users was 0.

    The number of orphaned users fixed by adding new logins and then updating users was 0.

     

    יש רעיון?

    יום ראשון 16 אוקטובר 2011 14:23
  • תיקון

    כשאני מבצע את הפעולות הנ"ל הכל תקין.

    אני מעביר את ה MIRROR לשרת השני, מבצע שוב את הפעולות הכל תקין.

    אני מחזיר לשרת הראשון, ומבצע

    EXEC sp_change_users_login 'Report';

    הוא מראה לי כאילו שוב צריך לבצע את התיקון הנ"ל לא ברור לי למה? כביכול המעבר מצד לצד "משבש" את החיבור שנעשה למשתמש. רעיונות?

    יום שישי 21 אוקטובר 2011 12:15
  • הי,

    למה אתה מתכוון שאתה אומר שאתה מעביר לראשון? בתהליך ה- Failover?

    האם יצרתה אובייקטים בבסיס הנתונים המשני לפני המעבר לראשון?

    אתה יכול לפרט יותר לגבי מה אתה מבצע, למה אתה מצפה ומה מתקבל?

    יום טוב ושבוע טוב,


    אסף שלם
    יום ראשון 23 אוקטובר 2011 07:58
  • הקמתי משתמש ב LOGIN של ה SQL

    הקמתי את הMIRROR על שני השרתים

    ביצעתי אתהבדיקה בשרת A וביצעתי את  sp_change_users_login

    ביצעתי FAILOVER 

     Bוחזרתי על אותם הפעולות בשרת

     FAILOVERביצעתי שוב

    ושוב בדקתי

    EXEC sp_change_users_login 'Report';

    ושוב קיבלתי כאילו לא עשיתי כלום וצריך לסדר את המשתמשים שוב

    לא ברור לי למה

     

    יום ראשון 23 אוקטובר 2011 09:34
  • הי פלג,

    הקמתה משתמש בשרת A, והקמתה Mirror ע"י שחזור ולכן אתה צריך להריץ sp_change_users_login ע"מ שיעדכן את המזהה הייחודי של ה- User בשרת B אחרי שחזור, עד כאן אין בעיה.

    לאחר ה- Failover אני מבין שהכל עבד תקין.

    ברגע שביצעתה את הפעולה שוב על שרת B זה די ברור שתצטרך לעשות שוב את "רענון" ה- User החדש בשרת A מכוון שהוא נוצר ב- B.

    בקיצור מה שהפרוצדורה עושה זה עדכון ה- ID של ה- User, במטריצת ההרשאות, על בסיס השם שלו. ולכן בכל פעם שאתה יוצר LOGIN בשרת X ומשחזר בשרת Y תצטרך לבצע רענון כזה.

    אני מקווה שהבנתי נכון את הסנריו ועניתי על השאלה.


    אסף שלם
    יום ראשון 23 אוקטובר 2011 09:44
  • לא ביצעתי אץ הפעולה מחדש, אלא ביצעתי בדיקה שאחרי ה FAILOVER וחזרה לשרת A

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

    שמוציאים צרייך כביכול לתקן אותו שוב

    יום ראשון 23 אוקטובר 2011 09:49
  • הי פלג,

    זו בהחלט בעיה לא ברורה, באופן כללי זו לא התנהגות טבעית ולכן הייתי בודק:

    1. בשני השרתים יש אותה גירסא של SQL Server כולל Service packs וכל העידכונים.

    2. הייתי מוודא שלא נוצר אך אובייקט בבסיס הנתונים המשני אחרי ה- failover אפילו לא טבלה.

     


    אסף שלם
    • סומן כתשובה על-ידי pituachMVP, Editor יום שישי 05 אפריל 2013 19:22
    יום ראשון 23 אוקטובר 2011 14:17
  • 1. גרסה זהה לחלוטין כולל SP.

    2.לא נוסף כלום

    יום ראשון 07 אפריל 2013 06:11
  • הי,

    זה שרשור מלפני שנה וחצי. לא ברור לי איך הוא חזר לחיים פתאום...

    בכל אופן, הנה ההסבר לתופעה שמתוארת למעלה...

    הקישור בין ה-User ל-Login מבוצע באמצעות ה-SID של ה-Login. אתה יצרת Login אחד בשרת A ו-Login אחר בשרת B. לכל Login יש SID אחר.

    בהתחלה, יצרת את ה-Login וה-User בשרת A, והם היו מקושרים לפי ה-SID של ה-Login בשרת A.

    אחרי Failover לשרת B, הקישור התנתק, כי ה-User מקושר ל-SID משרת A, ובשרת B אין Login עם ה-SID הזה.

    כשהרצת את הפרוצדורה sp_change_users_login, היא בעצם שינתה את הקישור של ה-User ל-SID החדש של ה-Login בשרת B.

    אחרי Failover נוסף לשרת A, שוב התנתק הקישור, כי עכשיו ה-User מקושר ל-SID משרת B, ובשרת A אין Login עם ה-SID הזה.

    וחוזר חלילה...

    כשמשתמשים ב-Domain Login, התופעה לא מתרחשת, כי ל-Login בשני השרתים יש את אותו SID. אבל כשמשתמשים ב-SQL Server Login, כמו במקרה שלך, זו תופעה ידועה ובלתי נמנעת.

    כדי לפתור את הבעיה, אתה צריך פשוט ליצור SQL Server Login בשני השרתים עם אותו SID. אתה יכול לציין את ה-SID כחלק מהפקודה CREATE LOGIN.

    בהצלחה!

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

    יום שני 08 אפריל 2013 05:08
    מנחה דיון
  • אני מניח שהוא חזר לחים כי סגרתי אותו לפני כמה ימים וסימנתי תשובה. אז בטח נשלח מייל לכל מי שהיה רשום לשרשור ואז pelegk1 נכנס לבדוק והוסיף הודעה ולכן גרם לו לקפוץ להתחלה :-)

    signature

    יום שני 08 אפריל 2013 14:21
    מנחה דיון