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 engine ที่เรียกใช้ไม่ใช่ SSIS เพื่อให้สามารถทํางานโดยไม่มีข้อผิดพลาด โดยวิธีการที่ตัวละครทั้งหมดที่ไม่สามารถใช้ใน Shift-JIS คือ "?" แปลงเป็น: นี่คือข้อกําหนดด้าน SQL Server แม้ว่าจะไม่ใช่ SSIS แต่ผลลัพธ์จะคล้ายกันสําหรับทุกระบบที่ใช้ SQL Server
เปิดตัวแปล ADO NET และเปลี่ยนโหมดการเข้าถึงข้อมูลเป็นคําสั่ง SQL ตอนนี้คุณสามารถป้อน SQL ได้แล้ว ให้เขียนคําสั่ง Select เพื่อดึงข้อมูลจากฐานข้อมูล ข้อความที่มีอักขระที่ไม่สามารถใช้ใน Shift-JIS ถูกบังคับให้แปลงเป็น varchar โดยใช้แคสต์
เนื่องจากอักขระที่ไม่สามารถใช้ใน Shift-JIS ได้ถูกเอาออกไปแล้วในขณะที่ข้อมูลไหลไปยัง SSIS การประมวลผลจึงสามารถส่งผ่านได้ตามที่เป็นอยู่
คุณจะเห็นว่าข้อความถูกเขียนไปยัง CSV เรียบร้อยแล้ว นอกจากนี้ตัวละครทั้งหมดที่ไม่สามารถใช้ใน Shift-JIS คือ "?" คุณจะเห็นว่ามันถูกแปลงเป็น: