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

Tạo hồ sơ công khai mặc định cho thư cơ sở dữ liệu trong SQL Server (T-SQL)

Khi bạn sử dụng sp_send_dbmail thủ tục được lưu trữ để gửi email trong SQL Server, bạn thường sẽ bao gồm @profile_name đối số để chỉ định cấu hình nào sẽ sử dụng.

Tuy nhiên, nếu bạn bỏ qua đối số này, sp_send_dbmail sẽ sử dụng hồ sơ riêng tư mặc định cho người dùng hiện tại. Nếu người dùng không có hồ sơ riêng tư mặc định, sp_send_dbmail sẽ sử dụng hồ sơ công khai mặc định cho msdb cơ sở dữ liệu.

Nếu không có cái nào trong số này được định cấu hình, bạn sẽ gặp lỗi sau:

Msg 14636, Level 16, State 1, Procedure msdb.dbo.sp_send_dbmail, Line 112
No global profile is configured. Specify a profile name in the @profile_name parameter.

Nếu bạn gặp phải lỗi này, về cơ bản bạn có ba tùy chọn:

  • Chỉ định cấu hình nào sẽ sử dụng, bằng cách bao gồm @profile_name đối số khi gọi sp_send_dbmail thủ tục.
  • Tạo hồ sơ riêng tư mặc định cho người dùng hiện tại.
  • Tạo tiểu sử công khai cho msdb cơ sở dữ liệu.

Bài viết này cung cấp một ví dụ về tùy chọn thứ ba:tạo hồ sơ công khai cho msdb cơ sở dữ liệu.

Ví dụ

Dưới đây là ví dụ về quy trình tạo hồ sơ Thư cơ sở dữ liệu, tạo tài khoản Thư cơ sở dữ liệu, thêm tài khoản vào hồ sơ, sau đó cấp quyền truy cập công khai vào hồ sơ đó.

-- Create a Database Mail profile  
EXECUTE msdb.dbo.sysmail_add_profile_sp  
    @profile_name = 'DB Public Profile',  
    @description = 'Public Profile for emails.'; 

-- Create a Database Mail account  
EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_id = 1,
    @account_name = 'DB Public',  
    @description = 'Public account for emails.',  
    @email_address = '[email protected]',  
    @replyto_address = '[email protected]',  
    @display_name = 'DB Public Mailer',  
    @mailserver_name = 'smtp.example',
    @port = 587;

-- Add the account to the profile  
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
    @profile_name = 'DB Public Profile',  
    @account_name = 'DB Public',  
    @sequence_number = 1;

-- Grant the public principal access to the profile
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'DB Public Profile',
    @principal_name = 'public',
    @is_default = 1;

Dòng cuối cùng thực sự là phần làm cho nó trở thành hồ sơ công khai mặc định.

Bằng cách sử dụng @is_default = 1 , Tôi đang đặt hồ sơ này thành hồ sơ công khai mặc định. Nếu tôi đã sử dụng @is_default = 0 thay vào đó, nó sẽ không phải là hồ sơ công khai mặc định.

Để đặt hồ sơ ở chế độ công khai, hãy chỉ định @principal_id trong tổng số 0 hoặc @principal_name trong tổng số public . Hồ sơ công khai có sẵn cho tất cả người dùng trong msdb cơ sở dữ liệu (mặc dù người dùng cũng phải là thành viên của DatabaseMailUserRole để thực thi sp_send_dbmail ).

Lưu ý rằng chỉ có thể có một hồ sơ công khai mặc định.

Cập nhật cấu hình hiện có

Nếu bạn đã có hồ sơ công khai, nhưng đó không phải là hồ sơ công khai mặc định, bạn có thể sử dụng sysmail_update_principalprofile_sp để thay đổi điều đó.

Ví dụ:

EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
    @profile_name = 'DB Public Profile',
    @principal_name = 'public',
    @is_default = 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm kiếm đối tượng cơ sở dữ liệu và dữ liệu bảng trong SQL Server

  2. Cột được tính toán trong SQL Server là gì?

  3. Thay thế một chuỗi bằng một chuỗi khác trong SQL Server (T-SQL)

  4. SQL Server 2008 Dữ liệu dọc sang ngang

  5. Ngày giờ truyền SQL