SQL Server Database Mail đã được giới thiệu trong SQL Server 2005. Database Mail là một thành phần có thể gửi email bằng SQL Server Engine. Sử dụng Thư cơ sở dữ liệu, quản trị viên hoặc nhà phát triển có thể gửi kết quả truy vấn đến người dùng cuối. DBA có thể cấu hình nó để nhận thông báo và cảnh báo qua email. Thư cơ sở dữ liệu sử dụng SMTP (Giao thức truyền thư đơn giản) để gửi email đến người nhận.
Trong bài viết này, tôi sẽ trình bày cách định cấu hình Thư cơ sở dữ liệu SQL Server.
Điều kiện tiên quyết để bật Thư cơ sở dữ liệu
Để bật tính năng thư cơ sở dữ liệu, cần có các điều kiện tiên quyết sau:
- Nhà môi giới dịch vụ cho cơ sở dữ liệu MSDB phải được bật.
- Dịch vụ SQL Server Agent phải đang chạy.
Nhà môi giới dịch vụ phải được bật
Cơ sở dữ liệu Mail yêu cầu nhà môi giới dịch vụ xếp hàng các email. Nếu nhà môi giới dịch vụ bị vô hiệu hóa, thư cơ sở dữ liệu không thể gửi thông báo người môi giới dịch vụ và nó vẫn nằm trong hàng đợi người môi giới dịch vụ.
Để xác minh rằng nhà môi giới dịch vụ đã được bật, hãy thực hiện truy vấn sau:
USE master go SELECT database_id AS 'Database ID', NAME AS 'Database Name', CASE WHEN is_broker_enabled = 0 THEN 'Service Broker is disabled.' WHEN is_broker_enabled = 1 THEN 'Service Broker is Enabled.' END AS 'Service Broker Status' FROM sys.databases WHERE NAME = 'msdb.'
Đầu ra trông như sau:
Nếu nhà môi giới dịch vụ trên cơ sở dữ liệu MSDB bị vô hiệu hóa, hãy thực hiện các truy vấn sau theo trình tự để bật nhà môi giới dịch vụ:
Use master go alter database [MSDB] set single_user with rollback immediate GO alter database [MSDB] set Enable_Broker GO alter database [MSDB] set multi_user with rollback immediate GO
Phải chạy dịch vụ tác nhân máy chủ SQL
Thư cơ sở dữ liệu gửi email hoặc tin nhắn bằng cách sử dụng dịch vụ tác nhân SQL Server. Nếu dịch vụ tác nhân không chạy, thì SQL Server không thể gửi email. Trong khi dịch vụ đại lý không chạy, tất cả các thư sẽ được xếp hàng đợi và khi dịch vụ đại lý bắt đầu, tất cả các thư đã xếp hàng sẽ được gửi.
Để xác minh trạng thái của dịch vụ tác nhân, hãy thực thi lệnh sau trong studio quản lý SQL Server.
use master go EXEC xp_servicecontrol N'querystate',N'SQLAgent$CMS'
Đầu ra trông như sau:
Nếu dịch vụ đại lý SQL Server không chạy, thì chúng ta cần khởi động nó. Để bắt đầu dịch vụ SQL Server Agent, hãy mở Dịch vụ , đi tới Bảng điều khiển>> Công cụ quản trị>> Dịch vụ . Trong danh sách dịch vụ, hãy tìm kiếm SQL Server Agent . Nhấp nhanh vào Tác nhân SQL Server và chọn Bắt đầu, như thể hiện trong hình ảnh sau:
Khi nhà môi giới dịch vụ được bật và Dịch vụ tác nhân SQL bắt đầu, hãy bật email cơ sở dữ liệu bằng cách thay đổi tham số cấu hình phiên bản cơ sở dữ liệu. Theo mặc định, tính năng email cơ sở dữ liệu không được bật. Nó phải được bật bằng cách thay đổi giá trị cấu hình của Database Mail XPs từ 0 đến 1. Một lần nữa, Cơ sở dữ liệu thư XPs tham số là một tùy chọn nâng cao; do đó, trước khi thay đổi nó, hãy thay đổi Hiển thị tùy chọn nâng cao tham số cấu hình từ 0 đến 1.
Để bật thư cơ sở dữ liệu, hãy thực hiện các truy vấn sau theo trình tự:
USE master Go EXEC sp_configure 'show advanced options', 1 --Enable advance option Go RECONFIGURE Go EXEC sp_configure 'Database Mail XPs,' 1 --Enable database Mail option Go RECONFIGURE Go EXEC sp_configure 'show advanced options', 0 --Disabled advanced option Go RECONFIGURE Go
Khi Thư cơ sở dữ liệu được bật, hãy tạo hồ sơ thư cơ sở dữ liệu và tài khoản thư cơ sở dữ liệu.
Định cấu hình Thư cơ sở dữ liệu
Khi tất cả các điều kiện tiên quyết được đáp ứng, hãy định cấu hình tài khoản thư cơ sở dữ liệu và hồ sơ thư cơ sở dữ liệu.
Tạo tài khoản và hồ sơ thư cơ sở dữ liệu
Để định cấu hình tài khoản thư cơ sở dữ liệu và hồ sơ thư cơ sở dữ liệu, hãy mở SQL Server Management Studio. Trong Object Explorer, Mở rộng Quản lý và nhấp chuột phải vào Định cấu hình thư cơ sở dữ liệu , như thể hiện trong hình ảnh sau:
Trình hướng dẫn cấu hình thư cơ sở dữ liệu hộp thoại mở ra. Trong hộp thoại, chọn Thiết lập thư cơ sở dữ liệu bằng cách thực hiện các tác vụ sau nút radio và nhấp vào Tiếp theo .
Bây giờ, trong Hồ sơ mới hộp thoại, cung cấp tên hồ sơ, mô tả là tùy chọn và nhấp vào nút Thêm để tạo tài khoản SMTP. Bạn có thể định cấu hình nhiều tài khoản SMTP. Khi thư Cơ sở dữ liệu gửi email, nó sử dụng tài khoản SMTP dựa trên mức độ ưu tiên được liệt kê trong tài khoản SMTP chế độ hiển thị theo ô. Nếu một tài khoản bị lỗi trong khi gửi email, hồ sơ sẽ sử dụng tài khoản tiếp theo trong danh sách ưu tiên. Xem hình ảnh sau:
Trong Tài khoản thư cơ sở dữ liệu mới hộp thoại, cung cấp Tên tài khoản thích hợp , Mô tả (tùy chọn), Địa chỉ email , Tên hiển thị , Email trả lời (Tùy chọn), Máy chủ SMTP và Số cổng . Nếu máy chủ SMTP sử dụng xác thực SSL / TSL, hãy chọn Máy chủ yêu cầu xác thực an toàn lựa chọn. Trong danh sách xác thực, hãy chọn một loại xác thực, được sử dụng để xác thực máy chủ SMTP và nhấp vào OK . Xem hình ảnh sau:
Quay lại Trình hướng dẫn cấu hình thư cơ sở dữ liệu hộp thoại, tài khoản SMTP sẽ được liệt kê trong tài khoản SMTP chế độ hiển thị theo ô. Xem hình ảnh sau:
Nhấp vào Tiếp theo để cấu hình bảo mật hồ sơ thư cơ sở dữ liệu. Chúng tôi có thể cấu hình hồ sơ email cơ sở dữ liệu riêng tư hoặc công khai. Chỉ một người dùng hoặc vai trò cụ thể mới có thể gửi email bằng Sử dụng hồ sơ cá nhân. Bất kỳ người dùng hoặc vai trò cơ sở dữ liệu nào cũng có thể gửi email bằng Hồ sơ công khai. Người dùng phải được tạo trong cơ sở dữ liệu MSDB và những người dùng đó phải là thành viên của vai trò cơ sở dữ liệu có tên DatabaseMailUserRole để gửi một email. Chúng tôi cũng có thể đặt hồ sơ làm hồ sơ mặc định. Sau khi thiết lập bảo mật hồ sơ, hãy nhấp vào Tiếp theo để cấu hình tham số hệ thống. Xem hình ảnh sau để xem cấu hình:
Trong Định cấu hình thông số hệ thống cửa sổ, chúng tôi có thể đặt một số lần thử lại, kích thước tệp đính kèm tối đa, danh sách các phần mở rộng tệp bị cấm gửi dưới dạng tệp đính kèm. Xem hình ảnh sau:
Khi thông số hệ thống đã được định cấu hình, hãy nhấp vào Tiếp theo để xem lại toàn bộ cấu hình và danh sách các hành động. Nhấp vào Kết thúc để hoàn thành cấu hình thư cơ sở dữ liệu. Xem hình ảnh sau đây.
Khi cấu hình hoàn tất, hãy nhấp vào Đóng để thoát khỏi trình hướng dẫn. Xem hình ảnh sau:
Tạo và định cấu hình tài khoản và hồ sơ thư cơ sở dữ liệu bằng T-SQL
Chúng tôi cũng có thể cấu hình hồ sơ thư cơ sở dữ liệu và tài khoản thư bằng T-SQL. Để định cấu hình thư cơ sở dữ liệu, người dùng phải có quyền 'thực thi' trên quy trình được lưu trữ sau.
- Sysmail_add_account_sp
- Sysmail_add_profile_sp
- Sysmail_add_profileaccount_sp
Sysmail_add_account_sp thủ tục tạo một tài khoản cho thư cơ sở dữ liệu. Để tạo tài khoản cho thư cơ sở dữ liệu, hãy thực thi mã sau:
EXEC msdb.dbo.sysmail_add_account_sp @account_name = 'Database Mail Default SMTP account' , @description = 'This account will be used to send database mail' , @email_address = '[email protected]' , @display_name = 'DBA Support' , @replyto_address = '' , @mailserver_type = 'SMTP' , @mailserver_name = '192.168.1.60' , @port = 25 Go
Sysmail_add_profile_sp thủ tục tạo một hồ sơ thư cơ sở dữ liệu. Để tạo cấu hình thư cơ sở dữ liệu, hãy thực thi mã sau:
-- Create a Database Mail profile EXEC msdb.dbo.sysmail_add_profile_sp @profile_name = 'Database Mail Profile' , @description = 'This profile will be used to send database mail' Go
Sysmail_add_profileaccount_sp thủ tục thêm tài khoản SMTP vào cấu hình thư cơ sở dữ liệu. Để thêm tài khoản SMTP vào cấu hình thư cơ sở dữ liệu, hãy thực thi mã sau:
-- Add the account to the profile EXEC msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'Database Mail Profile' , @account_name = 'Database Mail Default SMTP account' , @sequence_number = 1 Go
Gửi Thư Kiểm tra bằng Thư Cơ sở dữ liệu
Khi thư cơ sở dữ liệu được định cấu hình, như tôi đã đề cập trước đây, để gửi email, người dùng phải được tạo trong cơ sở dữ liệu MSDB và người dùng này phải là thành viên của DatabaseMailUserRole . Nó cho phép người dùng cơ sở dữ liệu gửi email bằng Thư cơ sở dữ liệu. Người dùng cơ sở dữ liệu phải có quyền được thực thi trên các thủ tục được lưu trữ sau, được sử dụng để quản lý thư cơ sở dữ liệu:
- sysmail_help_status_sp
- sysmail_delete_mailitems_sp
- sysmail_allitems
- sysmail_event_log
- sysmail_faileditems
- sysmail_mailattachments
- sysmail_sentitems
- sysmail_unsentitems
Để gửi email thử nghiệm bằng SSMS, hãy mở SQL Server Management Studio>> Mở rộng Quản lý trong Quản lý máy chủ SQL>> Nhấp chuột phải vào Thư cơ sở dữ liệu và chọn Gửi thư kiểm tra . Xem hình ảnh sau:
Gửi email thử nghiệm hộp thoại mở ra. Trong Hồ sơ thư cơ sở dữ liệu thả xuống, chọn tên của cấu hình được sử dụng để gửi email (Cấu hình Thư Cơ sở dữ liệu), Trong mục Tới hộp văn bản, cung cấp địa chỉ email của người nhận email và nhấp vào Gửi thư kiểm tra . Xem hình ảnh sau:
Chúng tôi cũng có thể gửi email bằng mã T-SQL. Để làm điều đó, hãy thực thi tập lệnh T-SQL sau:
use MSDB go EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Database Mail Profile' , @recipients = '[email protected]' , @subject = 'Automated Test Results (Successful)' , @body = 'The stored procedure finished successfully.' Go
Danh sách các bảng cần thiết để kiểm tra trạng thái email
Sau đây là danh sách các bảng, được sử dụng để xem thư cơ sở dữ liệu cấu hình, tài khoản cơ sở dữ liệu và trạng thái của email.
[id bảng =53 /]
Để xem nhật ký thư cơ sở dữ liệu, hãy mở SQL Server Management studio>> mở rộng Quản lý >> Nhấp chuột phải vào Thư cơ sở dữ liệu và chọn Xem nhật ký thư cơ sở dữ liệu . Xem hình ảnh sau:
Trình xem tệp nhật ký hộp thoại mở ra, như được hiển thị trong hình ảnh sau:
Bỏ tài khoản và hồ sơ thư cơ sở dữ liệu
Để bỏ cấu hình Thư cơ sở dữ liệu, trước tiên hãy thả cấu hình Thư cơ sở dữ liệu. Để làm điều đó, hãy mở Định cấu hình trình hướng dẫn thư cơ sở dữ liệu, như đã giải thích ở đầu bài viết. Trong trình hướng dẫn, chọn Quản lý hồ sơ và tài khoản Thư cơ sở dữ liệu và nhấp vào Tiếp theo . Xem hình ảnh sau:
Trên Quản lý hồ sơ và tài khoản trang s, chọn Xem thay đổi hoặc xóa hồ sơ hiện có và nhấp vào Tiếp theo . Xem hình ảnh sau:
Trên Quản lý hồ sơ hiện có , chọn tên của tiểu sử mà bạn muốn xóa khỏi Tên tiểu sử hộp thả xuống và nhấp vào Xóa và nhấp vào Tiếp theo. Xem hình ảnh sau:
Tiếp theo, màn hình sẽ hiển thị tóm tắt hành động, hãy xem lại tóm tắt và nhấp vào Kết thúc để bỏ hồ sơ. Xem hình ảnh sau:
Sau khi bỏ hồ sơ thư cơ sở dữ liệu, hãy thả tài khoản cơ sở dữ liệu. Để làm điều đó, trên Mở trình hướng dẫn cấu hình thư cơ sở dữ liệu >> chọn Quản lý hồ sơ và tài khoản Thư cơ sở dữ liệu >> Chọn tùy chọn Xem, thay đổi hoặc xóa tài khoản hiện có và nhấp vào Tiếp theo. Xem hình ảnh sau:
Trên Quản lý tài khoản hiện có từ Tên tài khoản hộp thả xuống, chọn tên tài khoản bạn muốn xóa và nhấp vào nút Xóa , như được hiển thị trong hình ảnh sau:
Màn hình sau sẽ hiển thị tóm tắt hành động, hãy xem lại tóm tắt và nhấp vào Kết thúc để bỏ tài khoản. Xem hình ảnh sau:
Bỏ tài khoản và hồ sơ thư cơ sở dữ liệu bằng T-SQL
Bạn cũng có thể loại bỏ tài khoản thư cơ sở dữ liệu và hồ sơ thư cơ sở dữ liệu bằng cách thực thi T-SQL Script. Để loại bỏ cấu hình cơ sở dữ liệu và tài khoản, hãy thực thi mã sau:
IF EXISTS(SELECT * FROM msdb.dbo.sysmail_profileaccount pa INNER JOIN msdb.dbo.sysmail_profile p ON pa.profile_id = p.profile_id INNER JOIN msdb.dbo.sysmail_account a ON pa.account_id = a.account_id WHERE p.name = 'Database Mail Profile' AND a.name = 'Database Mail Default SMTP account') BEGIN EXECUTE msdb.dbo.sysmail_delete_profileaccount_sp @profile_name = 'Database Mail Profile',@account_name = 'Database Mail Default SMTP account' END IF EXISTS(SELECT * FROM msdb.dbo.sysmail_account WHERE name = 'Database Mail Default SMTP account') BEGIN EXECUTE msdb.dbo.sysmail_delete_account_sp @account_name = 'Database Mail Default SMTP account' END IF EXISTS(SELECT * FROM msdb.dbo.sysmail_profile WHERE name = 'Database Mail Profile') BEGIN EXECUTE msdb.dbo.sysmail_delete_profile_sp @profile_name = 'Database Mail Profile' END
Để xác minh rằng thư cơ sở dữ liệu và tài khoản cơ sở dữ liệu đã bị xóa, hãy thực hiện truy vấn sau:
SELECT * FROM msdb.dbo.sysmail_profileaccount pa INNER JOIN msdb.dbo.sysmail_profile p ON pa.profile_id = p.profile_id INNER JOIN msdb.dbo.sysmail_account a ON pa.account_id = a.account_id WHERE p.name = 'Database Mail Profile' AND a.name = 'Database Mail Default SMTP account'
Tóm tắt
Trong bài viết này, tôi đã giải thích:
- Thư cơ sở dữ liệu là gì và mục đích của nó?
- Điều kiện tiên quyết để định cấu hình Thư cơ sở dữ liệu.
- Định cấu hình tài khoản Thư cơ sở dữ liệu và Hồ sơ Thư cơ sở dữ liệu bằng studio quản lý SQL Server.
- Định cấu hình tài khoản Thư cơ sở dữ liệu và Hồ sơ Thư cơ sở dữ liệu bằng T-SQL.
- Gửi email Kiểm tra bằng SSMS và T-SQL.
- Thả một cách duyên dáng hồ sơ Thư cơ sở dữ liệu và tài khoản Thư cơ sở dữ liệu.