21

このエラーが発生しています:

メッセージ 229、レベル 14、状態 5、プロシージャ sp_send_dbmail、行 1
オブジェクト 'sp_send_dbmail'、データベース 'msdb'、スキーマ 'dbo' に対する EXECUTE 権限が拒否されました。

コードの関連部分:

/****** Object:  StoredProcedure [dbo].[dbo.STATUSCHANGE_EMAILALERT] ******/

EXEC msdb.dbo.sp_send_dbmail
  @recipients = 'Test@gmail.com', -- Group Email
  @subject = 'Employee Status Update',
  @profile_name ='Test@gmail.com', -- Setup the profile name group
  @body = @body,
  @body_format = 'HTML';
4

5 に答える 5

21

ここで私のために働いた素敵で簡単な修正を見つけました:

SQL アプリケーションがデータベース メールを使用して電子メールを送信できない場合 (既に DBMail アカウントとプロファイルが設定されていると仮定します)、設定する項目が 2 つあります。

  1. SQL MANAGEMENT STUDIO > MANAGEMENT > DATABASE MAIL > 右クリックして CONFIGURE… を選択 > MANAGE PROFILE SECURITY > SQL MANAGEMENT を選択
  2. PUBLICオプションにチェックを入れる
  3. DEFAULT PROFILEをクリックして、YESに設定します
  4. STUDIO > DATABASES > SYSTEM DATABASES > MSDB を右クリックして [NEW QUERY] を選択し、Enter > grant execute on sp_send_dbmail to public を選択して [OK] をクリックします。
于 2016-12-16T01:41:41.487 に答える
17

データベース メールを送信するには、ユーザーは msdb データベースのユーザーであり、msdb データベースのDatabaseMailUserRoleデータベース ロールのメンバーである必要があります。msdb ユーザーまたはグループをこのロールに追加するには、SQL Server Management Studio を使用するか、データベース メールを送信する必要があるユーザーまたはロールに対して次のステートメントを実行します。

EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole'
    ,@membername = '<user or role name>';
GO
于 2012-09-14T13:02:17.207 に答える
3

sp_send_dbmailストアド プロシージャを実行するユーザーに実行権限を付与するか、ロールに追加しますmsdb.DatabaseMailUser

于 2012-09-14T13:00:27.187 に答える
0

SQL エージェント ジョブ - ステップの [Run As] オプションを誤って [[User]] から [(Not Specified)] に変更してしまいました。それにより、私のジョブが機能し始めました。

于 2020-03-04T21:02:09.020 に答える