SSIS מפיק פלט של מחרוזת Unicode כקוד תו Shift-JIS לקובץ טקסט
דפוסים הגורמים לשגיאות
נניח שלעמודה מסוג nvarchar בטבלה ב- SQL Server יש מחרוזת שלא ניתן להשתמש בה ב- Shift-JIS. אגב, אם אתה שם תווים אלה בעמודה varchar, ישנם תווים שלא ניתן להשתמש בהם, כגון העמודה "ColumnShiftJis" בצד ימין. החלף אותו.
ב- SSIS, הזרימה מוגדרת לקריאת נתונים מהטבלה הקודמת כפי שמוצג באיור ולהפצתם לקובץ טקסט.
נניח שברצונך להפיק פלט אותו כקובץ CSV. מכיוון ש- Shift-JIS משמש לעתים קרובות בקבצי CSV, הגדר את קידוד התווים של קובץ הטקסט ל- Shift-JIS.
אם תבצע עם הגדרה זו, תתרחש שגיאה בתזמון הפלט.
מופיעה הודעת שגיאה הדומה להודעה הבאה:
קובץ הפלט יופרע גם באמצע הדרך כאשר אירעה השגיאה.
אם תנסה להפיק פלט כפי שהוא, זו תהיה שגיאה, לכן נסה לשלב "המרת נתונים" באמצע.
המר את סוג הנתונים מ- "DT_WSTR" ל- "DT_STR" והפוך אותו לטופס שניתן להפיק ל- Shift-JIS.
עם זאת, אם גם תבצע זאת, תקבל שגיאה. הסיבה לכך היא ש-SSIS נכשל לחלוטין בעיבוד מרומז שגורם לנתונים להיות חסרים. אם ברצונך ש- SSIS יבצע עיבוד דה-מוקלד של טקסט, יהיה עליך לציין במפורש החלפת תווים עבור כל התווים.
דרכים לעקיפת הבעיה
קיימת דרך לשנות את סוג הטקסט באמצעות SQL בעת קריאה מטבלה במסד נתונים. אם זה SQL, זה מנוע SQL Server שמפעיל אותו, לא SSIS, כך שהוא יכול לפעול ללא שגיאות. אגב, כל התווים שלא ניתן להשתמש בהם ב- Shift-JIS הם "?" הומר ל: זהו מפרט צד של SQL Server. גם אם זה לא SSIS, התוצאה דומה עבור כל המערכות המשתמשות ב- SQL Server.
פתח את ADO NET Translator ושנה את מצב הגישה לנתונים לפקודת SQL. כעת, כאשר באפשרותך להזין SQL, כתוב משפט בחר כדי לאחזר נתונים ממסד הנתונים. טקסט המכיל תווים שלא ניתן להשתמש בהם ב- Shift-JIS מומר בכוח ל- varchar באמצעות יצוק.
מכיוון שתווים שלא ניתן להשתמש בהם ב- Shift-JIS כבר הוסרו בזמן שהנתונים זורמים ל- SSIS, ניתן להעביר את העיבוד כפי שהוא.
ניתן לראות שהטקסט נכתב בהצלחה ל- CSV. כמו כן, כל התווים שלא ניתן להשתמש בהם ב- Shift-JIS הם "?" ניתן לראות שהוא הומר ל: