Вашият подход е ОК, но вашата процедура за обвивка трябва да е в базата данни msdb. След това изпълнявате "EXEC msdb.dbo._TestSendMail"
Това все още оставя проблема с разрешенията за dbo._TestSendMail в msdb. Но public/EXECUTE ще бъде достатъчно:той излага само 3-те параметъра, от които се нуждаете.
Ако се съмнявате, добавете С ШИФРОВАНЕ. Това е достатъчно, за да спре всеки без права на системен администратор да преглежда кода
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