アカウントを作成し、サーバーの役割をパブリックとして割り当てました。データベース mydb ではユーザー マッピングを dbo として割り当て、msdb では dbo として割り当てます。
msdb のユーザー マッピング設定で、次のロールを確認しました。
DatabaseMailUserRole
db_owner
public
次に、このアカウントでアプリにログインし、データベース メール プロファイルを使用してメールを送信しようとします。そして、次のようなエラーが発生しました:
System.Data.SqlClient.SqlException: The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
サーバーロールsysadminをこのアカウントに割り当てた場合。その後、正常に動作しています。
しかし、このアカウントに sysadmin を割り当てたくありません。この問題を解決するには?
奇妙なことに、テストサーバーでも試しています。そのアカウントは、msdb の DatabaseMailUserRole になくても、正常に機能しています。
2 つの SQL サーバー ボックスでの唯一の違いは、SMTP 認証設定
です
。
こんにちはブリッジです。ありがとう。EXEC msdb.dbo.sysmail_help_principalprofile_sp を実行し、本番環境で以下を取得しました。
principal_id principal_name profile_id profile_name is_default
11 guest 1 sqlservice 0
12 mydomainaccount 1 sqlservice 0
ステージングでは、結果はありません。