- 締切済み
sp_send_dbmailで文字化け
SQL Server2005のストアドプロシージャからsp_send_dbmailを使ってメール送信を行っているのですが、受信したメールの件名、本文が文字化して困っています。 多分、メールの文字コードがUNICODE(UTF-8)である為に文字化けがおきていると思います。 メール送信に必要なテーブルの属性をUnicode データ型のnchar、nvarchar、nvarchar(max) に変更し、ストアドプロシージャで文字列の操作の際にNのプリフィックスを付けてみましたがダメでした。 ベッキーやOutlook Expressなどでは自動的に文字コードが変換されるので、文字化が起こらないのですが、今回のシステムではノーツ又はサイボウズを使用することになっており、こちらでは文字化けおこしてしまいます。 環境ですが以下のとおりです。 ・SQL Server2005 ・データベースの照合順序はJapanese_CI_ASです。 ・WindowsXP どなたか文字化けをなくす方法をご存知の方、ご教授お願いします。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kero_mio
- ベストアンサー率90% (94/104)
回答No.1
SQL Serverメールがある環境が今手元にないので、 正式には確認できないのですが、 「SET ANSI_DEFAULTS ON」を使ってみるというのは如何でしょうか? -- SJISにする SET ANSI_DEFAULTS ON -- メール送信実行 exec dbo.sp_send_dbmail ...... -- 元に戻す SET ANSI_DEFAULTS OFF 間違っていたらすいません。
お礼
ありがとうございます。 やってみましたが、エラーになりました。 以下がストアドになります。 USE [ReportDB] GO /****** オブジェクト: StoredProcedure [dbo].[ReportDb_TEST_MAIL2] スクリプト日付: 07/16/2007 17:57:18 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_DEFAULTS ON go CREATE PROCEDURE [dbo].[ReportDb_TEST_MAIL7] as EXEC msdb.dbo.sp_send_dbmail @profile_name = 'TEST_PROFILE', @recipients = 'aaa@bbb.co.jp', @body = 'あいうえお', @subject = 'かきくけこ' ; を実行すると「コマンドは正常に完了しました。」とメッセージが 表示されるのですが、作成されたプロシージャがオブジェクト一覧に 見つからず、ロックエラーが発生します。 また、ストアドにせず、 SET ANSI_DEFAULTS ON go EXEC msdb.dbo.sp_send_dbmail @profile_name = 'TEST_PROFILE', @recipients = 'aaa@bbb.co.jp', @body = 'あいうえお', @subject = 'かきくけこ' ; を実行したのですが、「メールがキューに登録されました。」と 表示されますが、実際にメールは送られてこない状態になります。 で、結局ですが、 http://support.microsoft.com/kb/312839/ja を参考にしてメールを送信することが出来ました。 SQL CLRも検討したのですが、とりあえず上記のURLを参考に できましたのでこれでいこうと思います。