SSIS mengeluarkan rentetan Unikod sebagai kod aksara Shift-JIS ke fail teks
Corak yang mengakibatkan ralat
Anggapkan bahawa lajur jenis nvarchar dalam jadual pada SQL Server mempunyai rentetan yang tidak boleh digunakan dalam Shift-JIS. Dengan cara ini, jika anda meletakkan watak-watak ini dalam lajur varchar, terdapat aksara yang tidak boleh digunakan, seperti lajur "ColumnShiftJis" di sebelah kanan. Gantikannya.
Pada SSIS, aliran disediakan untuk membaca data dari jadual sebelumnya seperti yang ditunjukkan dalam gambar dan mengeluarkannya ke fail teks.
Anggap bahawa anda ingin mengeluarkannya sebagai fail CSV. Oleh kerana Shift-JIS sering digunakan dalam fail CSV, tetapkan pengekodan aksara fail teks ke Shift-JIS.
Jika anda melaksanakan dengan tetapan ini, ralat akan berlaku pada masa output.
Mesej ralat yang serupa dengan yang berikut muncul:
Fail output juga akan terganggu separuh jalan apabila ralat berlaku.
Jika anda cuba untuk output seperti itu, ia akan menjadi ralat, jadi cuba masukkan "penukaran data" di tengah.
Tukar jenis data daripada "DT_WSTR" kepada "DT_STR" dan jadikan ia sebagai borang yang boleh dikeluarkan kepada Shift-JIS.
Walau bagaimanapun, jika anda juga melaksanakan ini, anda akan mendapat ralat. Ini kerana SSIS gagal dalam pemprosesan tersirat yang menyebabkan data hilang. Jika anda mahu SSIS melakukan pemprosesan detyped teks, anda perlu menentukan penggantian aksara secara eksplisit untuk semua aksara.
Workarounds
Terdapat cara untuk menukar jenis teks menggunakan SQL apabila membaca dari jadual dalam pangkalan data. Jika ia SQL, ia adalah enjin SQL Server yang menjalankannya, bukan SSIS, jadi ia boleh berjalan tanpa ralat. Dengan cara ini, semua watak yang tidak boleh digunakan dalam Shift-JIS adalah "?" Ditukar kepada: Ini adalah spesifikasi sisi SQL Server. Walaupun ia bukan SSIS, hasilnya serupa untuk semua sistem yang menggunakan SQL Server.
Buka Penterjemah BERSIH ADO dan ubah mod capaian data kepada SQL Command. Sekarang anda boleh memasukkan SQL, tulis kenyataan Pilih untuk mendapatkan data daripada pangkalan data. Teks yang mengandungi aksara yang tidak boleh digunakan dalam Shift-JIS ditukar secara paksa kepada varchar menggunakan cast.
Oleh kerana aksara yang tidak boleh digunakan dalam Shift-JIS telah dialih keluar pada masa data yang mengalir ke SSIS, pemprosesan boleh diluluskan seperti itu.
Anda dapat melihat bahawa teks berjaya ditulis ke CSV. Juga, semua aksara yang tidak boleh digunakan dalam Shift-JIS adalah "?" Anda dapat melihat bahawa ia telah ditukar kepada: