web-dev-qa-db-ja.com

オブジェクト 'sp_send_dbmail'、データベース 'msdb'で断続的なEXECUTE権限が拒否されました

2分ごとに実行され、ジョブ情報を収集した後にユーザーにメールを送信するジョブがあります。ほとんどの場合は成功しますが、数日ごとに実行権限が拒否されましたで失敗します。障害の直後は、再び正常に実行されます。

テーブルを通過し、特定のジョブの情報とステータスを取得するジョブです。 SQL Serverジョブではなく、データベース内のテーブルに情報が格納されている独自のアプリケーションジョブ。メールを作成し、msdb.dbo.sp_send_dbmailからHTML形式で送信します。

Saが所有し、手動で実行されません。数日おきにしか発生しないため(場合によっては3または4)、メッセージのコンテンツが大きすぎるか、ガベージが含まれているため、msdb.dbo.sp_send_dbmailプロシージャが送信できない可能性があります。

ジョブまたはステップにエラー処理はありません。ステップは1つだけです。情報を集約してメールを送信するプロシージャを実行します。エージェントログには、アクセス許可に関する質問のタイトルと同じことが記載されています。

SQL Serverは、失敗したログインをログに記録するように設定されています。 1週間前の時点で失敗したログインはありません。

2
Shellz

MSDBをクリーンアップするメンテナンスプランを設定することで、これを解決しました。とてもいっぱいでした! Execute permission denied errorを取得せずに数週間経過したことを確認したかったので、回答の投稿を待ちました。

1
Shellz

コミュニティwikiの回答

ジョブステップの出力を記録するようにジョブステップを変更し、ストアドプロシージャをprocコードの先頭にあるテキストPRINTに設定します。 procが呼び出されているかどうかを確認するには、ジョブ履歴を確認します。トラブルシューティングが必要なようです。

sp_send_dbmail procは、SMTPサーバーにメールを送信できないため、アクセス拒否エラーを返します。

0
user126897