Ditt tillvägagångssätt är OK, men ditt omslagsproc måste finnas i msdb-databasen. Sedan kör du "EXEC msdb.dbo._TestSendMail"
Detta lämnar fortfarande frågan om behörigheter på dbo._TestSendMail i msdb. Men public/EXECUTE kommer att räcka:det exponerar bara de 3 parametrarna du behöver.
Om du är osäker, lägg till MED KRYPTERING. Detta är tillräckligt bra för att hindra vem som helst utan sysadminrättigheter från att se koden
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