Nếu bạn cố gắng gửi thư từ SQL Server nhưng bạn nhận được "tên hồ sơ không hợp lệ" thì có thể là do bạn chưa chỉ định hồ sơ hợp lệ cho @profile_name
đối số.
Ví dụ
Ví dụ:giả sử bạn đang sử dụng mã T-SQL sau để gửi email thông báo đến quản trị viên bất cứ khi nào công việc SQL Server Agent không thành công:
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';
Nhưng bạn gặp lỗi sau:
Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42 profile name is not valid
Lỗi này đặc biệt cho chúng tôi biết rằng “tên hồ sơ không hợp lệ”.
Để gửi email bằng Database Mail, bạn cần chỉ định một hồ sơ thay vì một tài khoản người dùng trực tiếp. Trong trường hợp này, tôi đã chỉ định một @profile_name
trong số DB Admin Profile
, nhưng một hồ sơ như vậy không thực sự tồn tại.
Trước khi có thể gửi thư, điều tôi cần làm là thêm người dùng vào msdb
cơ sở dữ liệu, tạo tài khoản thư cơ sở dữ liệu, sau đó tạo hồ sơ và thêm tài khoản thư cơ sở dữ liệu vào hồ sơ đó. Sau đó, tôi cần thêm người dùng vào hồ sơ.
Tất cả, nó sẽ giống như thế này:
-- 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 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;
Rõ ràng, 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 hoàn tất, bạn đã sẵn sàng để gửi thư.