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

Cấp quyền truy cập người dùng msdb vào hồ sơ thư cơ sở dữ liệu trong SQL Server (T-SQL)

Để gửi email bằng Thư cơ sở dữ liệu trong SQL Server, người dùng phải là thành viên của DatabaseMailUserRole trong msdb cơ sở dữ liệu và có quyền truy cập vào ít nhất một hồ sơ Thư cơ sở dữ liệu.

Để cấp cho người dùng quyền truy cập vào cấu hình Thư cơ sở dữ liệu với T-SQL, hãy sử dụng sysmail_add_principalprofile_sp thủ tục được lưu trữ trong msdb cơ sở dữ liệu.

Ví dụ

Đây là một ví dụ để chứng minh.

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'DB Admin Profile',
    @principal_name = 'Marge',
    @is_default = 1;

Trong trường hợp này, tôi cấp cho người dùng quyền truy cập “Đánh dấu” vào hồ sơ “Hồ sơ quản trị viên DB”.

Điều này giả định rằng hồ sơ và người dùng đã tồn tại.

Trong trường hợp này, tôi cũng chỉ định @is_default = 1 , điều này làm cho cấu hình này trở thành cấu hình mặc định cho người dùng.

Chỉ định ID người dùng / hồ sơ

Ngoài ra, bạn có thể chỉ định ID người dùng và / hoặc ID tài khoản thay vì tên của họ.

Do đó, chúng ta có thể thay đổi ví dụ trước đó thành giống như sau:

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_id = 1,
    @principal_id = 25,
    @is_default = 1;

Điều này rõ ràng giả định rằng đó là ID cho các tài khoản được đề cập.

Lưu ý rằng tên hoặc ID phải được cung cấp.

Ngoài ra, khi cung cấp các ID, chúng được cung cấp dưới dạng int .

Lưu ý rằng sysmail_add_principalprofile_sp thủ tục được lưu trữ trong msdb cơ sở dữ liệu và nó thuộc sở hữu của dbo lược đồ. Do đó, bạn sẽ cần sử dụng cách đặt tên ba phần nếu thực thi nó từ bên ngoài msdb cơ sở dữ liệu.

Hồ sơ công khai

Bạn cũng có thể đặt tiểu sử làm tiểu sử công khai mặc định cho người dùng trong msdb cơ sở dữ liệu.

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

Để đặ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.

Định cấu hình Thư cơ sở dữ liệu

Các bước trên giả định rằng bạn đã tạo cấu hình Thư cơ sở dữ liệu và thêm ít nhất một tài khoản Thư cơ sở dữ liệu vào cấu hình đó.

Xem Cách gửi Email trong SQL Server để biết ví dụ đầy đủ về cách định cấu hình Thư cơ sở dữ liệu, sau đó gửi email.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng một biến trong truy vấn OPENROWSET

  2. Lưu trữ dữ liệu XML trong SQL Server

  3. So sánh int Sql Server vs nvarchar về hiệu suất?

  4. SQL:Chọn 3 bản ghi hàng đầu + Tổng số lượng

  5. 3 cách lấy tên tháng từ ngày trong SQL Server (T-SQL)