SQL Server có tùy chọn thư cơ sở dữ liệu mà bạn có thể sử dụng để gửi thư từ máy chủ cơ sở dữ liệu.
Ví dụ:bạn có thể nhận được thông báo khi công việc SQL Server Agent chạy xong hoặc bị lỗi hoặc khi có lỗi nghiêm trọng cao, v.v.
Khi Thư cơ sở dữ liệu không được định cấu hình
Trong SQL Server, thư được gửi bằng cách thực thi sp_send_dbmail
thủ tục được lưu trữ trong msdb
cơ sở dữ liệu.
Đây là một ví dụ:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Your favorite SQL Server Agent job just failed',
@subject = 'SQL Server Agent Job: FAILED';
Tuy nhiên, điều này giả định rằng SQL Server được cấu hình để gửi thư.
Nếu bạn cố gắng gửi thư từ SQL Server nhưng gặp lỗi như sau, điều đó có nghĩa là bạn hiện chưa bật Thư cơ sở dữ liệu.
Msg 15281, Level 16, State 1, Procedure msdb.dbo.sp_send_dbmail, Line 0 SQL Server blocked access to procedure 'dbo.sp_send_dbmail' of component 'Database Mail XPs' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Database Mail XPs' by using sp_configure. For more information about enabling 'Database Mail XPs', search for 'Database Mail XPs' in SQL Server Books Online.
Bật XP Thư Cơ sở dữ liệu
Trước khi bắt đầu gửi thư từ máy chủ, bạn cần đảm bảo rằng bạn đã bật Database Mail XPs.
Điều này khá dễ thực hiện (mặc dù Microsoft khuyến nghị rằng các tùy chọn nâng cao như tùy chọn này chỉ nên được thay đổi bởi quản trị viên cơ sở dữ liệu có kinh nghiệm hoặc kỹ thuật viên SQL Server được chứng nhận).
Dưới đây là cách bật Database Mail XPs:
EXEC sp_configure 'show advanced options', '1';
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE
GO
Kết quả:
Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install. Commands completed successfully. Commands completed successfully.
Tạo tài khoản thư, hồ sơ, v.v.
Cơ sở dữ liệu Thư được gửi qua một hồ sơ, thay vì một tài khoản người dùng trực tiếp.
Để gửi email bằng Thư cơ sở dữ liệu, bạn cần tạo tài khoản Thư cơ sở dữ liệu, cấu hình Thư cơ sở dữ liệu, thêm tài khoản vào hồ sơ, rồi cấp cho người dùng quyền truy cập vào hồ sơ đó. Người dùng cần sử dụng msdb
cơ sở dữ liệu.
Mã T-SQL để thực hiện việc này có thể trông giống như sau:
-- Switch to the msdb database
USE msdb;
-- Create a user on the msdb database
CREATE USER Marge FOR LOGIN Marge;
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'DB Admin',
@description = 'Mail account for admin emails.',
@email_address = '[email protected]',
@replyto_address = '[email protected]',
@display_name = 'DB Automated Mailer',
@mailserver_name = 'smtp.example.com',
@port = 25;
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'DB Admin Profile',
@description = 'Profile for admin emails.';
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'DB Admin Profile',
@account_name = 'DB Admin',
@sequence_number = 1;
-- Grant the msdb user access to the Database Mail profile
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'DB Admin Profile',
@principal_name = 'Marge',
@is_default = 1;
Bạn sẽ cần phải thay thế các chi tiết khác nhau bằng của riêng bạn. Điều này cũng giả định rằng bạn chỉ định một máy chủ thư hoạt động.
Sau khi làm xong, bạn sẽ có thể gửi thư bằng msdb.dbo.sp_send_dbmail
thủ tục được lưu trữ.