SQL SERVER 2000 ועברית בפקודת SQL

SQL SERVER 2000 ועברית בפקודת SQL

השאלה שלי בקצרה היא: הרצתי בSQL SERVER 2000 פקודת SELECT פשוטה, עם עברית,לדוגמה: 'אבגד' select from table1 where fld2=1 הפקודה הצליחה אבל התוצאה שקיבלתי היא סימני שאלה-ז"א העברית לא יוצאת טוב. האם מישהו יודע ממה נובעת הבעיה והאם עלי לשנות משהו בהגדרות של הSQL SERVER 2000? איך אפשר לעבוד עם פקודות SQL שמכילות עברית בSQL SERVER 2000? (אני יודעת שה2000 עובד עם קידוד של UNICODE) מודה מראש לכל מי שינסה לעזור ********************************************************************* (פירוט השאלה באריכות,למי שיש לו סבלנות ומתעניין מה ניסיתי כבר: קיבלתי משימה: בארגון קיים DB של SQL SERVER 7 ואני רוצה להעביר אותו לSQL SERVER 2000. כשעשיתי EXPORT לכל האוביקטים ,הבעיה הראשונה שנתקלתי בה היתה שכל התוכן בטבלאות שהכילו תווים בעברית,הפכו לסימני שאלה. חיפשתי בHELP ומצאתי שהיות שSQL SERVER 2000 עובד עם קידוד UNICODE ,לכן בשדות מסוג VARCHAR או CHAR יש בעיה עם עברית.הייתי צריכה לשנות את הDATATYPE בDB המקורי להיות Nvarchar במקום varchar (או NCHAR במקום CHAR) והEXPORT DATA בין הטבלאות הצליח והעברית נכנסה לטבלאות של ה2000 כמו שצריך. הבעיה השניה שנתקלתי בה נראית דומה אבל לא הצלחתי למצוא לה פתרון: יש STORED PROCEDURES שגם מכילים תוים בעברית (למשל: שולפים שדה POSTBOX ומשרשים לו את המילים "תא דואר"). בSQL SERVER 2000 העברית לא יוצאת טוב (מוצגים סימני שאלה,כמו שאפשר לנחש). אני יודעת שהבעיה לא נובעת בגלל שמדובר בSTORED POCEDURE דוקא, כי ראיתי אח"כ שבעצם כל פקודת SQL שמכילה עברית -לא יוצאת טוב.אפילו אם מדובר בSELECT הפשוט ביותר כמו: 'אבגד' select from table1 where fld2=1 לא הצלחתי למצוא פתרון בHELP של הSQL SERVER 2000, אבל ברור לי שחייבת להיות דרך לעבוד איתו עם עברית ! האם מדובר באיזושהיא הגדרה בהתקנה שלו? האם כדאי להתקין SQL SERVER מחדש?( את ההתקנה של הSQL SERVER לא אני עשיתי וכששאלתי את מי שהתקין הוא לא זכר שנתקל בהגדרות של השפה) אני מאד מודה מראש לכל מי שינסה לעזור ויום טוב לכל משתתפי הפורום!
 
אני אשמח גם...

אני אשמח גם לדעת אם מישהו כן מצליח להריץ פקודה כזו על SQL SERVER 2000 ומקבל את העברית בצורה תקינה וקריאה. זה יעודד אותי שקיים פתרון, ויש טעם להמשיך לחפש אותו... תודה מראש למי שינסה לעזור!
 
SQL 2000 יכול לעבוד עם עברית

נתחיל בכך, שניתן לעבוד עם עברית על SQL Server 2000 גם כאשר עובדים בASCII וגם כאשר עובדים בUNICODE, כך שלא כדאי לך להתייאש. המסר שלך קצת מפתיע אותי. לרוב כאשר במקום עברית רואים סימני שאלה, אז מדובר בבעיה בהכנסת הנתונים, שגרמה להפיכתם לסימני שאלה בבסיס הנתונים. לעומת זאת במידה ורואים ג'יבריש, אז יש סיכוי להגיע לנתונים בעברית. תריצי את הscript הקצר הזה בבקשה דרך הQA ותראי האם את רואה עברית:
use pubs go create table HebTest (HebCol varchar(10) COLLATE Hebrew_CI_AS) go insert into HebTest (HebCol) values ('בדיקה בלבד') select * from HebTest go drop table HebTest​
במידה ואת רואה עברית, תריצי את הפקודה exec sp_help TableName (כאשר במקום TableName צריך לכתוב שם של טבלה אמיתית, שמכילה נתונים בעברית. תבדקי בתוצאות שיוחזרו את הcollation של העמודה.
 
תודה, עזרת,אבל עדיין יש בעיה

תודה לך על הנסיון לעזור. הרצתי את הscript דרך הQA ולא ראיתי עברית עדיין. אחרי שעיינתי בקישור הבא: http://www.webmaster.org.il/showArticle.asp?id=33 שמופיע פה בפורום באחת התשובות (תודה לשרון המכונה 24sharon!) למדתי משהו חדש וראיתי שאם נוסיף בinsert ,לפני הערך המוכנס,N, - אז העברית מוצגת נכון -גם אם השדה הוא מסוג VARCHAR וגם הוא מסוג NVARCHAR.(ובלי ה N כאמור, לא רואים אצלי עברית ) הבעיה אצלי היא לא בנתונים כי כמו שציינתי אפילו SELECT של עברית שלא קשור לנתונים בטבלה -לא מציג עברית נכונה. לדוגמה: 'אבגד' select from table1 where id=1 מציג לי סימני שאלה !!! ברור לי שהSQL SERVER 2000 שלי עובד עם UNICODE,ולפי מה שהבנתי/חשבתי -זו האפשרות היחידה. אתה יכול לספר לי איך ניתן לעבוד עם SQL SERVER עם ASCII ? איפה משנים את ההגדרה? תודה מראש!
 

דממה

New member
כמה דברים

תני קליק ימני על ה-DB ב-Enterprise Manager, בחרי ב-Properties ובדקי מהו ה-Collation המוגדר, הוא צריך להיות עברי כדי שתוכלי לעבוד עם ascii. בדקי בלוח הבקרה של מערכת ההפעלה תחת "הגדרות איזוריות" (Regional Settings) שמותקנת עברית במערכת. האות N בתחילת המחרוזת באה לציין Unicode, קחי בחשבון שעבודה עם Unicode היא לא חסכונית ומוגבלת. כמו שאמר חובב טניס - בדקי את ה-collation המוגדר לבסיס הנתונים, ולשדות הטקסט בטבלה עצמה (יכול להיות שונה). כיוון שאמרת שהסקריפט שנתן לך חובב לא עובד, אני חושד בהגדרת השפה.
 
אני לא מוצאת איפה מוגדר הCollation

תודה לך דממה! (מה שכתבתי בהודעה של "חשוב לי לציין היה לפני שראיתי את התגובה שלך, אז אל תתפלאי אם זה לא קשור...
) ב Regional Settings ודאי יש לי עברית.(לא כdefult, האם צריך להיות כdefault?) אבל הנושא הזה של Collation לא מוכר לי וכשאני מחפשת אותו בPROPERTIES הוא מצליח לחמוק מעיני... תוכלי לפקוח בבקשה את עיני? בPROPERTIES של הDB ב EM יש כמה כרטיסיות, באיזו מהן מופיעה ההגדרה של הCollation ? (הכי הגיוני שבכרטסת של Server Settings או Database Settings אבל אחרי שלא ראיתי שם את המילה Collation חיפשתי בכל השאר וג"כ לא מצאתי) אולי זה מופיע בשם אחר/כותרת אחרת? תודה מראש ויום טוב!!
 

דממה

New member
ככה

קודם כל תמונה
זו ההגדרה הכללית של ה-db. ניתן להגדיר גם כל עמודה בנפרד - לכן יש לקחת את אחת הטבלאות הבעייתיות ולבדוק גם. בטבלה ניתן לבדוק כפי שהציע חובב טניס באמצעות sp_help, ויש אפשרות קלה יותר: עמדי ב-Enterprise Manager על הטבלה הרלוונטית, קליק ימני ו-copy, אח"כ בצעי הדבקה בכל כתבן, ותראי מה ההגדרה של כל עמודה.
 
באמת תודה אבל אי אפשר לשנות משם...

וואו...איך שאת עונה מהר... אין מילים בפי להודות! באמת צדקת, ההגדרה שיש לי ב מאפינים של הdb היא SQL_Latin1_General_CP1_CI_AS אבל -הצילו!!!- אי אפשר לשנות את ההגדרה משם!!!! מה אפשר לעשות? וחוץ מזה, ראיתי שהשאלה שלי קצת "התפזרה" לכמה כוונים אז כתבתי הבהרה ומיקדתי את הבעיה. הנה עותק של מה שכתבתי : ********************************************************************* הבהרה קטנה: בטבלאות כן נכנסה לי עברית תקינה ובשליפת שדה שמכיל תוכן בעברית מטבלה,אין לי בעיה. העברית מוצגת נכון. (זה מה שכתבתי ב"הסטוריה" של השאלה ,שב export data מSQL SERVER 7 הייתי צריכה לשנות בDATA SOURCE את הDATATYPE לNvarchar במקום VARCHAR) הבעיה הנוכחית היא בSRORED PROCEDURES שמכילים לפעמים מחרוזת קבועה בעברית למשל: שולפים שדה POSTBOX ומשרשים לו את המילים "תא דואר" והעברית הזו מוצגת כסימני שאלה. עקרונית, אם אני אוסיף N למחרוזת בעברית,היא תוצג טוב,אבל אני מחפשת פתרון כללי וטוב יותר מאשר לעבור על כל הSP אחת-אחת ולשנות בכל אחת בנפרד! (אם אין פתרון אולי אני אשנה לASCII כשאדע איך אבל לא מפריע לי לעבוד עם UNICODE ,בפרט שהטבלאות כבר עברו באופן תקין) מקווה שהבהרתי ומיקדתי את השאלה ******************************************************************* אחרי כל ה"סיפור" הזה, האם את חושבת שהכיוון הזה של הCOLLATION הוא המפתח לפתרון? (גם אם לא אני אשמח לדעת איך אפשר לשנות אותו, בשביל להשכיל ולהחכים בנושא) שוב הרבה תודות!
 

דממה

New member
../images/Emo26.gif

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

תודה לך על מה שלמדת אותי ואולי גם אני אוכל לחדש לך משהו :אפשר לשנות את הcoolation! כתבתי איך לעשות זאת בהודעה שבה סיפרתי איך נפתרה הבעיה (רציתי להוסיף כאן קישור לשם אך לא הצלחתי,לצערי. זאת הכתובת:http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp?forum=193&msgid=42211038 ) יום טוב ובשורות טובות ושוב תודה כי העיצות שלך ממש הובילו אותי לכוון! נ.ב- איך מוסיפים לינק בתוכן ההודעה?...
 

דממה

New member
תודה רבה פנינה

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

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

הבהרה קטנה: בטבלאות כן נכנסה לי עברית תקינה ובשליפת שדה שמכיל תוכן בעברית מטבלה,אין לי בעיה. העברית מוצגת נכון. (זה מה שכתבתי ב"הסטוריה" של השאלה ,שב export data מSQL SERVER 7 הייתי צריכה לשנות בDATA SOURCE את הDATATYPE לNvarchar במקום VARCHAR) הבעיה הנוכחית היא בSRORED PROCEDURES שמכילים לפעמים מחרוזת קבועה בעברית למשל: שולפים שדה POSTBOX ומשרשים לו את המילים "תא דואר" והעברית הזו מוצגת כסימני שאלה. עקרונית, אם אני אוסיף N למחרוזת בעברית,היא תוצג טוב,אבל אני מחפשת פתרון כללי וטוב יותר מאשר לעבור על כל הSP אחת-אחת ולשנות בכל אחת בנפרד! (אם אין פתרון אולי אני אשנה לASCII כשאדע איך אבל לא מפריע לי לעבוד עם UNICODE ,בפרט שהטבלאות כבר עברו באופן תקין) מקווה שהבהרתי ומיקדתי את השאלה תודה רבה מראש למי שינסה לעזור ןיום טוב לכל משתתפי הפורם! ...ולכל עמי"ש.
 
עברית בשרת.

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

צר לי לאכזב אך כאמור,עברית כבר מותקנת בשרת ואני יכולה לכתוב עברית כרגיל.מה שהצעת זה רק לשנות את ברירת המחדל לעברית.אך מהדיון כאן + נסיונות שעשיתי , ברור לי שזה לא יפתור את הבעיה. הבעיה היא בcollation. הוספתי DB חדש לנסיון עם COLLATION עברי ואין שם בעיות אז ברור לי שההצעה שלך לא תפתור את הבעיה. 'צטערת... אבל תקרא הלאה-הצלחתי לפתור את הבעיה בדרך אחרת!
 
הבעיה נפתרה בשע"ט!לכל מי שמתעניין..

בשעה טובה, השבח לקל, הבעיה נפתרה! ואני למדתי הרבה דברים חשובים... לכל מי שמתעניין איך אז: כמובן שהיה צריך לשנות את הcollation וגיליתי שאפשר אפילו לשנות collation לDB קיים!!! איך? קודם כל חובה להגיע למצב של - single user mode החלפת - COLLATION‏ בצורה הפשוטה ביותר לכל בסיס הנתונים מתבצעת ע"י: ALTER DATABASE db_name COLLATE hebrew_CI_AS כמובן שאח"כ צריך להחזיר את המצב של single user mode חזרה למה שהיה קודם. תודה לכל מי שניסה לעזור ובפרט לדממה!
 
למעלה