none
char(6) RRS feed

  • שאלה

  • היי.

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

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

    יש למישהו רעיון איך לפתור את הסוגיה?

    תודה.


    itaigitt, http://copypastenet.blogspot.com
    יום רביעי 01 פברואר 2012 11:53

תשובות

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

    א. השימוש ב NCHAR אינו קשור לכך. הוא רק מגדיר עבודה עם יוניקוד אבל אינו קשור להגדרת ה Cultureבו עובדים. ייתרון של יוניקוד זה שהוא מאפשר עבודה בכל Cultureשרוצים במקביל מכיוון שיוניקוד כולל חלק בקו הקובע את השפה...

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

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

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

    http://ariely.info/dnn/Blog/tabid/83/EntryId/60/Null-character.aspx

    * אם אתה לא מצליח ליישם את הבלוג למקרה שלך אני אפרט בהמשך

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


    signature
    • נערך על-ידי pituachMVP, Editor יום חמישי 02 פברואר 2012 17:29
    • סומן כתשובה על-ידי itaigitt יום רביעי 29 פברואר 2012 07:51
    יום חמישי 02 פברואר 2012 17:20
    מנחה דיון
  • היי.

    לצערי לא מצאו לזה פה פתרון, לדעתי זה משהו שיש לטפל ברמת האפליקציה, כי ה-SQL כן מחזיר char(6) וכנראה הבעיה היא בקריאה של זה.

    אני מסמן תשובות, למרות שזה לאו דווקא הפתרון הישיר פה.

    תודה בכל מקרה לכווולם.

    איתי.


    itaigitt, http://copypastenet.blogspot.com

    • סומן כתשובה על-ידי itaigitt יום רביעי 29 פברואר 2012 07:51
    יום רביעי 29 פברואר 2012 07:51

כל התגובות

  • שכחתי לרשום ששימוש ב-NCHAR לא פתר את הבעיה.
    itaigitt, http://copypastenet.blogspot.com
    יום רביעי 01 פברואר 2012 12:09
  • * תשובה קצרה (אין לי הרבה זמן ואני רואה שיש הרבה שאלות פתוחות... אני ארוץ על כולן במהירות) אם יש עדיין שאלות ארחיב בהמשך.

    א. השימוש ב NCHAR אינו קשור לכך. הוא רק מגדיר עבודה עם יוניקוד אבל אינו קשור להגדרת ה Cultureבו עובדים. ייתרון של יוניקוד זה שהוא מאפשר עבודה בכל Cultureשרוצים במקביל מכיוון שיוניקוד כולל חלק בקו הקובע את השפה...

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

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

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

    http://ariely.info/dnn/Blog/tabid/83/EntryId/60/Null-character.aspx

    * אם אתה לא מצליח ליישם את הבלוג למקרה שלך אני אפרט בהמשך

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


    signature
    • נערך על-ידי pituachMVP, Editor יום חמישי 02 פברואר 2012 17:29
    • סומן כתשובה על-ידי itaigitt יום רביעי 29 פברואר 2012 07:51
    יום חמישי 02 פברואר 2012 17:20
    מנחה דיון
  • הי,

    תתחבר ב-  windows authentication לשרת ה- SQL ע"י אותו ה- USER משני המחשבים.

    ככה אתה בטוח שכל מי שמתחבר מקבל אותו פרופיל.

     

     


    אסף שלם
    יום שני 06 פברואר 2012 00:27
  • לדעתי מאוד מסוכן לאלץ אפליקציה לעבוד באוטנטיקציה מסויימת רק בשל בעיה קטנה של התאמת Culture/קידוד. אני חושב שהפתרון של אסף מתאים רק אם מדובר למשל בפעולה חד פעמית ולא אם מדובר בבעיה של אפליקציה הפועלת מ 2 מקומרות שונים (למשל אפליקציית WEB שרוצים שכל משתמש יעבוד עם הנתונים מכל מחשב... הפתרון פשוט לאלץ את האפליקציה לעבוד בצורה נכונה ולא לתת לכל מחשב לקבוע את ההגדרות לפי ההגדרות המקומיות שלו)

    * כאמור ניתן לתת פתרון ברמת מסד הנתונים או פתרון ברמת האפליקציה שמייצרת את הפניה למסד הנתונים (לדעתי זה בדרך כלל עדיף) וכמובן שניתן להישתמש בפתרון כפול אם רוצים. הקישור מעל כולל פתרון ברמת מסד הנתונים והסבר המקוצר שרשמתי כולל הסבר כללי על עבודה ברמת האפליקציה (אני מקווה שניתן להבין משהו ממנו וההסבר לא היהנ קצר מדי).


    signature
    יום שני 06 פברואר 2012 20:19
    מנחה דיון
  • שלום,

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

    אם מצאת פתרון אחר, נשמח אם תשתף אותנו.

    תודה,

    צוות הפורומים.


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

    יום רביעי 08 פברואר 2012 14:22
  • היי.

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

    איתי.


    itaigitt, http://copypastenet.blogspot.com

    יום רביעי 08 פברואר 2012 14:27
  • הי,

    האם יש עדכונים?

    תודה,

    צוות הפורומים


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

    יום שני 27 פברואר 2012 11:27
  • היי.

    לצערי לא מצאו לזה פה פתרון, לדעתי זה משהו שיש לטפל ברמת האפליקציה, כי ה-SQL כן מחזיר char(6) וכנראה הבעיה היא בקריאה של זה.

    אני מסמן תשובות, למרות שזה לאו דווקא הפתרון הישיר פה.

    תודה בכל מקרה לכווולם.

    איתי.


    itaigitt, http://copypastenet.blogspot.com

    • סומן כתשובה על-ידי itaigitt יום רביעי 29 פברואר 2012 07:51
    יום רביעי 29 פברואר 2012 07:51