MSSQL 2005 内でデータベース メールをセットアップしました。サーバーの管理者アカウントから、SQL Server エージェント ジョブを介して電子メールを送信できました。しかし、Web アプリケーションのデータベースにアクセスできるログイン経由でメールを送信しようとすると、メールを送信できません。
データベース メールへのアクセスを設定する最適な方法は何ですか?
メールを送信したい 2 つのシナリオがあります。
- SQL Server エージェントを介してジョブをスケジュールし、何らかのプロセスを実行してから電子メールを送信するストアド プロシージャを実行します。(これは問題ありませんでした)
- 電子メールを送信できる別のストアド プロシージャを呼び出す Web アプリケーションからストアド プロシージャを呼び出します。(これは私の権限の問題です)
可能な解決策
ログインにアクセス許可を付与する唯一の方法は、ログインをmsdbデータベースにマップし、 publicおよびDatabaseMailUserRoleを付与することです。これにより、msdbデータベースへのアクセスが大幅に増えると思われるため、これは非常に懸念されます。
送信したい電子メールをテーブルに保存し、SQL Server エージェント ジョブでそのテーブルを頻繁に調べて、キューに入っている電子メールを送信します。このように、Web アプリケーションのデータベース ログインは [msdb].[dbo].[sp_ send _dbmail] 呼び出しを実行しないため、 msdbデータベースへのアクセス許可は必要ありません。
他の解決策はありますか?