FIX:xp_sendmail 產生 UNICODE CSV 檔案格式

本文已封存。本文係以「現狀」提供且不會再更新。
BUG #:351089 (SHILOH_BUGS)
BUG #:351894 (SHILOH_BUGS)
徵狀
如果您在 SQL Server 2000 中執行 xp_sendmail 命令來發送包含 .csv 檔案的郵件,然後嘗試以 Microsoft Excel、Microsoft Word 或除了「記事本」以外的其他任何應用程式開啟這個 .csv 檔案,您可能會收到警告訊息,表示無法識別這個檔案格式。
發生的原因
在 SQL Server 2000 中執行 xp_sendmail 命令會產生格式為 UNICODE 的檔案,但在 SQL Server 7.0 中,所產生的檔案是 ANSI 格式。
解決方案
如果要解決這個問題,請取得 SQL Server 2000 的最新版 Service Pack。如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
290211 如何取得最新版 SQL Server 2000 Service Pack
其他可行方案
這個修正程式的英文版本應具有下列檔案屬性 (或更新):
日期版本大小檔名平台
Nov 21, 20008.00.0224165 KBSqlmap70.dllx86
狀況說明
Microsoft 已確認 SQL Server 2000 確實有上述問題, 這個問題最早已在 SQL Server 2000 Service Pack 1 中獲得修正。
其他相關資訊

重現問題的步驟

  1. 請執行下列命令:
    execute	master..xp_sendmail	@recipients = 'user1',    	@message = 'Testing',    	@query = 'select * from sysobjects',    	@width = 256,    	@subject = 'testing',    	@attach_results = 'true',    	@no_header = 'false',    	@separator = ',',    	@attachments = 'test.csv'					
  2. 當您收到 test.csv 檔案之後,請試著在 Excel 或 Word 中開啟,您會收到一個警告訊息,表示無法識別這個檔案格式。
  3. 請嘗試在 SQL Server 7.0 中執行相同的步驟,您會發現上述的格式問題並不會發生。
在套用 Hotfix 或 Service Pack 之後,將會實作下列兩個項目:
  • 建立 xp_sendmail 的選擇性參數 @ansi_attachment。這個參數可以為 True (表示附加檔案為 ANSI 格式)、False (表示附加檔案為 UNICODE 格式) 或不存在。如果省略這個參數,則會讀取 ansi_attachment 這個登錄值。
  • Sqlmap70.dll 會讀取下列新的登錄機碼,判斷要傳送的附加檔案是 ANSI 還是 Unicode 格式。

    針對預設執行個體:
    HKLM\Software\Microsoft\MSSQLSERVER\SQLMAPI\ansi_attachment
    針對具名執行個體:
    HKLM\Software\Microsoft\Microsoft SQL Server\InstanceNameHere\SQLMAPI\ansi_attachment
  • 如果沒有上述登錄機碼,請依照下列步驟加以建立。警告:不當使用 [登錄編輯程式] 可能會導致嚴重的問題,甚至必須重新安裝作業系統。Microsoft 並不保證可以解決您不當使用 [登錄編輯程式] 所導致的問題。請自行承擔使用 [登錄編輯程式] 的一切風險。

    1. 啟動 Regedt32.exe。
    2. 針對預設執行個體,請瀏覽至 HKLM\Software\Microsoft\MSSQLSERVER
      針對具名執行個體,請瀏覽至 HKLM\Software\Microsoft SQL Server\InstanceNameHere
    3. 建立名為 SQLMAPI 的新機碼。
    4. 將這個機碼的類別保留為空白。
    5. 建立名為 ansi_attachment 的新值。
    6. 將這個值的類型設定為 REG_DWORD。
    7. 將這個值設定為 1 表示附加檔案為 ANSI 格式;設定為 0 表示附加檔案為 Unicode 格式。
內容

文章識別碼:280720 - 最後檢閱時間:01/16/2015 21:11:39 - 修訂: 3.1

Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbbug kbfix kbqfe kbsqlserv2000sp1fix KB280720
意見反應