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

Khắc phục “tên hồ sơ không hợp lệ” khi gửi thư từ máy chủ SQL

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ư.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giải pháp DevOps để Tự động hóa Phát triển Cơ sở dữ liệu

  2. SQL động so với thủ tục được lưu trữ

  3. tách chữ và số bằng sql

  4. Truy vấn con sử dụng Tồn tại 1 hoặc Tồn tại *

  5. Cài đặt Azure Data Studio trên Ubuntu 18.04