Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Gửi email có tệp đính kèm trong SQL Server (T-SQL)

SQL Server cung cấp cho chúng tôi khả năng gửi email thông qua giải pháp Thư cơ sở dữ liệu của nó. Điều này bao gồm một loạt các thủ tục được lưu trữ tạo điều kiện thuận lợi cho việc cấu hình và gửi email.

Để gửi email, hãy sử dụng sp_send_dbmail thủ tục được lưu trữ. Thủ tục này chấp nhận một loạt các đối số tùy chọn, một trong số đó cho phép bạn gửi các tệp đính kèm.

Trên thực tế, có hai đối số cho phép bạn gửi tệp đính kèm. Cái bạn sử dụng sẽ tùy thuộc vào ngữ cảnh.

Đó là:

  • @file_attachments - Cho phép bạn chỉ định một tệp để đính kèm vào email.
  • @attach_query_result_as_file - Điều này chỉ áp dụng nếu bạn cũng đang sử dụng @query để gửi email kết quả của một truy vấn.

Ví dụ bên dưới.

Đính kèm tệp

@file_attachments đối số cho phép bạn chỉ định một tệp để đính kèm vào email.

Đây là một ví dụ:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'The attached file contains all required data.',
    @file_attachments = '/var/opt/mssql/bak/Nature.bak',
    @subject = 'File attached as discussed';

Giá trị phải bao gồm đường dẫn tuyệt đối đến tệp.

Theo mặc định, kích thước tệp tối đa 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ữ.

Đính kèm nhiều tệp

Bạn có thể đính kèm nhiều tệp bằng cách phân tách từng tên tệp bằng dấu chấm phẩy:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'The attached files contain all required data.',
    @file_attachments = '/var/opt/mssql/bak/Nature.bak;/var/opt/mssql/bak/World.bak',
    @subject = 'Files attached as discussed';

Như đã đề cập, giới hạn kích thước tệp áp dụng cho mỗi tệp. Vì vậy, nếu giới hạn kích thước tệp là 1 MB, thì mỗi tệp trong ví dụ này có thể lên đến 1 MB (dẫn đến tổng kích thước cho cả hai tệp đính kèm được kết hợp là 2 MB).

Đính kèm kết quả của một truy vấn

Bạn cũng có thể sử dụng Thư cơ sở dữ liệu để gửi email kết quả của một truy vấn. Điều này được thực hiện với @query lý lẽ. Theo mặc định, kết quả được liệt kê trong nội dung email, nhưng bạn có thể thêm chúng dưới dạng tệp đính kèm nếu muốn.

Để thêm chúng dưới dạng tệp đính kèm, hãy đặt @attach_query_result_as_file đối số có giá trị 1 .

Dưới đây là một ví dụ về việc gửi kết quả truy vấn dưới dạng tệp đính kèm:

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';

Có khá nhiều tùy chọn có sẵn cho bạn khi gửi kết quả truy vấn trong email.

Ví dụ:bạn có thể sử dụng @query_attachment_filename để chỉ định tên tệp (nếu không được chỉ định, Thư cơ sở dữ liệu sẽ tạo thành một tên). Bạn cũng có thể sử dụng @query_result_header để xác định xem tiêu đề có được đưa vào truy vấn hay không và bạn có thể sử dụng @query_result_no_padding để xóa bất kỳ khoảng đệm nào được tự động áp dụng cho kết quả.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kích hoạt SQL Server - Phần 2 Trình kích hoạt DDL &LOGON

  2. Hàng được phân tách bằng dấu phẩy trong SQL với mệnh đề Group By

  3. Hạn chế kết nối SQL Server đối với một địa chỉ IP cụ thể

  4. Giải phẫu các bế tắc của SQL Server và cách tốt nhất để tránh chúng

  5. Mẹo sửa lỗi phân mảnh chỉ mục máy chủ SQL