SSIS menampilkan string Unicode sebagai kode karakter Shift-JIS ke file teks
Pola yang mengakibatkan kesalahan
Misalnya kolom tipe nvarchar dalam tabel di SQL Server memiliki string yang tidak dapat digunakan dalam Shift-JIS. Omong-omong, jika Anda meletakkan karakter ini di kolom varchar, ada karakter yang tidak dapat digunakan, seperti kolom "ColumnShiftJis" di sebelah kanan. Ganti itu.
Pada SSIS, alur diatur untuk membaca data dari tabel sebelumnya seperti yang diperlihatkan pada gambar dan menampilkannya ke file teks.
Asumsikan bahwa Anda ingin menampilkannya sebagai file CSV. Karena Shift-JIS sering digunakan dalam file CSV, atur pengkodean karakter file teks ke Shift-JIS.
Jika Anda mengeksekusi dengan pengaturan ini, kesalahan akan terjadi pada waktu output.
Pesan kesalahan yang mirip dengan berikut ini muncul:
File output juga akan terganggu di tengah jalan ketika kesalahan terjadi.
Jika Anda mencoba untuk menghasilkan apa adanya, itu akan menjadi kesalahan, jadi coba masukkan "konversi data" di tengah.
Ubah tipe data dari "DT_WSTR" menjadi "DT_STR" dan buat menjadi formulir yang dapat dihasilkan ke Shift-JIS.
Namun, jika Anda juga menjalankan ini, Anda akan mendapatkan kesalahan. Ini karena SSIS secara ketat gagal dalam pemrosesan implisit yang menyebabkan data hilang. Jika Anda ingin SSIS melakukan pemrosesan detipe teks, Anda harus secara eksplisit menentukan substitusi karakter untuk semua karakter.
Penanganan masalah
Ada cara untuk mengubah jenis teks menggunakan SQL saat membaca dari tabel dalam database. Jika SQL, itu adalah mesin SQL Server yang menjalankannya, bukan SSIS, sehingga dapat berjalan tanpa kesalahan. Ngomong-ngomong, semua karakter yang tidak bisa digunakan di Shift-JIS adalah "?" Dikonversi ke: Ini adalah spesifikasi sisi SQL Server. Bahkan jika itu bukan SSIS, hasilnya serupa untuk semua sistem yang menggunakan SQL Server.
Buka ADO NET Translator dan ubah mode akses data ke SQL Command. Sekarang setelah Anda dapat memasuki SQL, tulis pernyataan Pilih untuk mengambil data dari database. Teks yang berisi karakter yang tidak dapat digunakan dalam Shift-JIS dikonversi secara paksa menjadi varchar menggunakan cast.
Karena karakter yang tidak dapat digunakan dalam Shift-JIS telah dihapus pada saat data mengalir ke SSIS, pemrosesan dapat diteruskan apa adanya.
Anda dapat melihat bahwa teks berhasil ditulis ke CSV. Selain itu, semua karakter yang tidak dapat digunakan dalam Shift-JIS adalah "?" Anda dapat melihat bahwa itu telah dikonversi ke: