Trong SQL Server, bạn có thể gửi email bằng sp_send_dbmail
thủ tục được lưu trữ trong msdb cơ sở dữ liệu.
Một trong những lựa chọn bạn có khi thực hiện thủ tục này là có đưa vào kết quả của một truy vấn hay không.
Một lựa chọn khác mà bạn có là có nên gửi những kết quả đó dưới dạng tệp đính kèm hay không.
Ví dụ
Để gửi email kết quả của một truy vấn, hãy sử dụng @query
đối số.
Để đính kèm những kết quả đó dưới dạng tệp đính kèm, hãy sử dụng @attach_query_result_as_file
lý lẽ. Điều này được chấp nhận một bit giá trị, với mặc định là 0
(không có tệp đính kèm).
Để gửi kết quả dưới dạng tệp đính kèm, chỉ cần cung cấp 1
cho đối số này.
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Potential candidates for an Admin job, perhaps?',
@query = 'SELECT TOP(5) * FROM Artists;',
@execute_query_database = 'Music',
@attach_query_result_as_file = 1,
@subject = 'Query results as discussed';
Ví dụ này sẽ gửi một email với kết quả được đính kèm dưới dạng .txt tập tin. Tên được tạo tự động bởi Thư cơ sở dữ liệu.
Theo mặc định, kích thước tệp tối đa cho tệp đính kèm là 1 MB cho mỗi tệp, nhưng bạn có thể thay đổi kích thước này bằng sysmail_configure_sp
thủ tục được lưu trữ.
Cung cấp tên cho tệp đính kèm
Bạn cũng có tùy chọn cung cấp tên riêng của mình cho tệp đính kèm. Bạn có thể thực hiện việc này với @query_attachment_filename
lý lẽ.
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Potential candidates for an Admin job, perhaps?',
@query = 'SELECT TOP(5) * FROM Artists;',
@execute_query_database = 'Music',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'Artists.csv',
@subject = 'Query results as discussed';
Tùy chọn khác
Đây là một ví dụ khác mở rộng trên ví dụ trước. Ở đây, tôi đã đưa vào một số tùy chọn mà bạn có thể thấy hữu ích khi gửi kết quả truy vấn dưới dạng tệp đính kèm email.
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Potential candidates for an Admin job, perhaps?',
@query = 'SELECT TOP(5) * FROM Artists;',
@execute_query_database = 'Music',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'Artists.csv',
@query_result_header = 1,
@query_result_width = 256,
@query_result_separator = ',',
@exclude_query_output = 1,
@append_query_error = 1,
@query_no_truncate = 0,
@query_result_no_padding = 1,
@subject = 'Query results as discussed';
Một số trong số này được đặt thành giá trị mặc định và một số thì không. Ví dụ:tôi đã thay đổi @query_result_no_padding
thành 1
để loại bỏ phần đệm từ bên trong các cột. Tôi cũng đã sử dụng @query_result_separator
để thay đổi dấu phân cách từ khoảng trắng mặc định thành dấu phẩy.
sp_send_dbmail
thủ tục chấp nhận nhiều đối số hơn tôi đã liệt kê ở đây. Xem tài liệu của Microsoft để biết danh sách đầy đủ các đối số và mô tả của chúng.
Định cấu hình Thư cơ sở dữ liệu
Các ví dụ trên trang này giả định rằng bạn đã bật và định cấu hình Thư cơ sở dữ liệu.
Nếu bạn chưa định cấu hình Thư cơ sở dữ liệu, hãy xem Cách gửi Email từ SQL Server. Bài viết đó cung cấp các ví dụ để bật và định cấu hình Thư cơ sở dữ liệu với T-SQL.