Pendekatan Anda OK, tetapi proc wrapper Anda harus berada di database msdb. Kemudian, Anda menjalankan "EXEC msdb.dbo._TestSendMail"
Ini masih menyisakan masalah izin pada dbo._TestSendMail di msdb.Tapi publik/EXECUTE sudah cukup:itu hanya memperlihatkan 3 parameter yang Anda butuhkan.
Jika ragu, tambahkan DENGAN ENKRIPSI. Ini cukup baik untuk menghentikan siapa pun tanpa hak sysadmin melihat kode
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