Cara Mengubah Pengkodean Lampiran dalam sp_send_dbmail
untuk SQL Server
Mengirim email dengan lampiran melalui SQL Server bisa menjadi tugas yang sederhana. Namun, jika Anda mengalami masalah di mana lampiran dikirim sebagai pengkodean UCS-2 dan Anda ingin mengubahnya menjadi pengkodean ANSI atau UTF-8, Anda tidak sendiri. Banyak pengguna menghadapi masalah serupa, terutama saat menggunakan prosedur tersimpan sp_send_dbmail
di SQL Server 2005. Dalam postingan blog ini, kita akan membahas masalah tersebut dan memberikan solusi untuk memastikan lampiran Anda dikodekan dengan benar.
Masalah
Saat menggunakan fungsi sp_send_dbmail
untuk mengirim hasil kueri SQL sebagai lampiran, Anda mungkin menemukan bahwa hasilnya dikodekan dalam format UCS-2. Format ini dapat menjadi masalah bagi penerima karena mungkin tidak kompatibel dengan berbagai aplikasi yang mengharapkan format ANSI atau UTF-8.
Contoh Skenario
Dalam skenario Anda, kueri yang Anda jalankan dengan sp_send_dbmail
adalah sebagai berikut:
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'temp@example.com',
@query = 'DECLARE @string_to_trim varchar(60);SET @string_to_trim = ''1234''; select rtrim(@string_to_trim), ''tom''',
@query_result_header=0,
@subject = 'lihat lampiran',
@body= 'isi sementara',
@profile_name= N'wksql01tAdmin',
@body_format = 'HTML',
@query_result_separator = ',',
@query_attachment_filename = 'results.csv',
@query_no_truncate = '0',
@attach_query_result_as_file = 1
Masalah yang Diketahui
Meskipun telah menerapkan kode SQL di atas, hasil Anda tetap dikirim sebagai pengkodean UCS-2 dan Anda menyebutkan beberapa komentar tentang perbaikan yang tersedia di SQL Server 2005 SP2, tetapi tampaknya hal ini bukan yang terjadi dalam situasi Anda.
Solusi
Sementara mungkin ada pilihan terbatas untuk mengubah pengkodean langsung melalui sp_send_dbmail
, Anda dapat mengatasi masalah ini dengan menggunakan utilitas BCP (Bulk Copy Program).
Menggunakan BCP untuk Pengkodean yang Benar
-
Ekspor Data ke File Datar: Gunakan BCP untuk mengekspor hasil kueri Anda ke dalam file datar. BCP memungkinkan Anda untuk menentukan format pengkodean selama proses ekspor.
bcp "SELECT RTRIM(@string_to_trim), 'tom'" queryout "C:\path\to\results.csv" -c -C 65001 -T
- Opsi
-c
menunjukkan mode karakter. - Opsi
-C 65001
menentukan pengkodean UTF-8. - Opsi
-T
menggunakan koneksi terpercaya ke SQL Server.
- Opsi
-
Lampirkan File Datar: Setelah file dihasilkan dengan pengkodean yang diinginkan, Anda kemudian dapat melampirkan file ini ke email Anda menggunakan metode konvensional. Ini dapat dikelola melalui skrip atau melalui pekerjaan SQL Server Agent di mana Anda dapat mengeksekusi perintah BCP ini dan diikuti dengan
sp_send_dbmail
untuk mengirim email.
Ringkasan Langkah-langkah
- Jalankan perintah BCP untuk membuang hasil kueri Anda ke dalam file .csv dengan pengkodean UTF-8.
- Gunakan
sp_send_dbmail
untuk mengirim email dengan lampiran .csv.
Kesimpulan
Meskipun mungkin tampak menakutkan pada awalnya, menyelesaikan masalah pengkodean UCS-2 dengan lampiran sp_send_dbmail
Anda dapat dikelola dengan menggunakan BCP. Dengan mengikuti langkah-langkah yang diuraikan di atas, Anda dapat memastikan lampiran Anda dikodekan dengan benar, sehingga lebih mudah bagi penerima Anda untuk mengakses dan memanfaatkan informasi yang diberikan.
Jika Anda masih menghadapi masalah atau memiliki pertanyaan lebih lanjut, jangan ragu untuk menghubungi kami!