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

Cách gửi kết quả truy vấn qua email trong SQL Server (T-SQL)

SQL Server cung cấp một cách dễ dàng để gửi email kết quả của một truy vấn cho chính bạn (hoặc cho người khác).

Để gửi email bằng T-SQL, bạn cần sử dụng sp_send_dbmail thủ tục được lưu trữ trong msdb cơ sở dữ liệu. Thủ tục này chấp nhận nhiều đối số, một trong số đó là @query lý lẽ. Đó là đối số đính kèm kết quả truy vấn của bạn vào email.

Ví dụ

Dưới đây là một ví dụ cơ bản sử dụng tối thiểu các đối số:

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',
    @subject = 'Query results as discussed';

Theo mặc định, kết quả của truy vấn được liệt kê trong phần nội dung của email. Ngoài ra, bạn có thể gửi kết quả dưới dạng tệp đính kèm.

Xóa đệm

Nếu kết quả của bạn được định dạng với quá nhiều khoảng đệm trong các cột, bạn có thể sử dụng @query_result_no_padding = 1 để loại bỏ phần đệm 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',
    @query_result_no_padding = 1,
    @subject = 'Query results as discussed';

Thêm kết quả truy vấn dưới dạng tệp đính kèm

Bạn có thể sử dụng @attach_query_result_as_file đối số để thêm kết quả truy vấn dưới dạng tệp đính kèm. Đ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,
    @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';

Trong ví dụ này, tôi đã thêm một số đối số khác.

@query_attachment_filename đối số cho phép bạn chỉ định tên tệp của riêng mình (nếu bạn không cung cấp đối số này, Thư cơ sở dữ liệu sẽ tạo thành một đối số).

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ụ T-SQL để bật và cấu hình Thư cơ sở dữ liệu. Không mất nhiều thời gian.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự cố khi mở tệp MDF vì nó báo lỗi SQL 5171? - Bài đăng của khách của Andre Williams

  2. Làm thế nào để lưu trữ mật khẩu trong cơ sở dữ liệu một cách an toàn?

  3. Sự khác biệt giữa sys.objects, sys.system_objects và sys.all_objects trong SQL Server

  4. Cách chuyển đổi từ định dạng ngày này sang định dạng ngày khác trong SQL Server bằng CONVERT ()

  5. FOR XML PATH (''):Bỏ qua các ký tự đặc biệt