iT邦幫忙

1

SQL DB MAIL msdb.dbo.sp_send_dbmail 問題請教

  • 分享至 

  • xImage

您好:
請問 msdb.dbo.sp_send_dbmail 中
若 @attach_query_result_as_file='1'
他會附加檔案,但 他是否會殘留 附件的檔案在SERVER端?

若是,是放在哪邊?
謝謝!

根據官方文件,當使用 @attach_query_result_as_file='1' 附加查詢結果為檔案時,該檔案會儲存在 MSDB 資料庫的暫存資料夾中。這些暫存資料夾的路徑可以透過下列方式找到:

SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('msdb');


預設情況下,MSDB 資料庫的暫存資料夾路徑為 SQL Server 安裝路徑底下的 MSSQL<instance_name>\MSSQL\DATA 資料夾,但這可以透過 SQL Server Configuration Manager 進行修改。

在郵件發送完成後,該暫存檔案應該會被清除,但如果系統遇到任何錯誤或異常情況,這些檔案可能會殘留在暫存資料夾中。如果您需要確保暫存檔案不會殘留在系統上,您可以在郵件發送後手動刪除這些暫存檔案。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
PPTaiwan
iT邦好手 1 級 ‧ 2023-04-20 10:33:51
最佳解答

臨時檔案通常會被存儲在操作系統的臨時文件夾中。通常會在以下的路徑之一

C:\Users<UserName>\AppData\Local\Temp,其中是執行SQL Server服務的用戶名,或者在C:\Windows\Temp。

下達語法查一下會存在那裡

DECLARE @temp_folder_path NVARCHAR(255)
EXEC master..xp_instance_regread 'HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'TEMP', @temp_folder_path OUTPUT
SELECT @temp_folder_path

通常在電子郵件成功發送後立即被刪除,如果出現任何問題導致檔案未被刪除,您可以在這些路徑中找到並手動刪除掉,當然你也可以寫 BAT 用 Windows 排程來刪掉一天前的檔案

noway iT邦研究生 3 級 ‧ 2023-04-21 11:29:44 檢舉

謝謝!

我要發表回答

立即登入回答