あなたのアプローチは問題ありませんが、ラッパー プロシージャは msdb データベースにある必要があります。次に、"EXEC msdb.dbo._TestSendMail" を実行します。
これにより、msdb の dbo._TestSendMail に対するアクセス許可の問題が残ります。ただし、public/EXECUTE で十分です。必要な 3 つのパラメーターのみを公開します。
疑わしい場合は、WITH ENCRYPTION を追加してください。これは、システム管理者権限のない人がコードを表示するのを止めるのに十分です
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