Cách tiếp cận của bạn là OK, nhưng proc trình bao bọc của bạn phải nằm trong cơ sở dữ liệu msdb. Sau đó, bạn thực thi "EXEC msdb.dbo._TestSendMail"
Điều này vẫn để lại vấn đề về quyền trên dbo._TestSendMail trong msdb, nhưng công khai / EXECUTE sẽ là đủ:nó chỉ hiển thị 3 tham số bạn cần.
Nếu nghi ngờ, hãy thêm VỚI KÍCH THÍCH. Điều này đủ tốt để ngăn bất kỳ ai không có quyền sysadmin xem mã
USE msdb
GO
CREATE PROCEDURE [dbo].[_TestSendMail]
(
@To NVARCHAR(1000),
@Subject NVARCHAR(100),
@Body NVARCHAR(MAX)
)
-- not needec WITH EXECUTE AS OWNER
AS
BEGIN
EXEC dbo.sp_send_dbmail @profile_name = N'myProfile',
@recipients = @To, @subject = @Subject, @body = @Body
END