5

sp_send_dbmail を使用してスケジュールされた SQL エージェント ジョブから電子メールを送信しようとすると、次のエラーが表示されます。

メッセージ 22050、レベル 16、状態 1、行 0 クエリのフォーマット エラー、おそらく無効なパラメーター メッセージ 14661、レベル 16、状態 1、プロシージャ sp_send_dbmail、行 504 クエリの実行に失敗しました: メッセージ 15404、レベル 16、状態 19、サーバー MyServer、行 1 Windows NT グループ/ユーザー 'MyDomain\sqlagent' に関する情報を取得できませんでした。エラー コード 0x5。

ジョブ ステップのコードは次のとおりです。

DECLARE @SQL NVARCHAR(400)
SELECT @SQL = 'SELECT COUNT(staff_id) FROM Staff'

EXEC msdb.dbo.sp_send_dbmail
@recipients = 'me@myemail.com',
@subject = 'Email Alert',
@body = 'Test',
@query = @SQL,
@execute_query_database = 'MyDB'

SQL エージェントは、ドメイン アカウント [MyDomain\sqlagent] で実行されています。msdb の DatabaseMailUserRole のメンバーとして追加するだけでなく、MyDB データベースでこのユーザーに db_owner 権限を付与しました。まだ運がありません。@query および @execute_query_database パラメーターを削除すると、「テスト」メールが送信されます。ただし、クエリの結果を添付する必要があります。

どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

3

過去にADでいくつかの奇妙なエラーに遭遇しました。これを実行しているアカウントの属性が AD 内で読み取り可能であることを確認することをお勧めします。それを行う最も簡単な方法は、実行することです

exec xp_logininfo 'MyDomain\sqlagent'

同じエラーが発生するかどうかを確認します。その場合は、ドメイン アカウントのセキュリティ プロパティを確認し [Active Directory でユーザーを右クリック > [プロパティ] > [セキュリティ] タブ] を選択し、認証済みユーザーの読み取りアクセス許可を設定します。

于 2012-10-18T20:22:52.013 に答える
-1

これは私にとってはうまくいきました。

'YourDatabase.SchemaName.tablename から列名を選択'

ここでこの答えを見つけました。

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/7869b033-80f1-4594-a77e-fb6dce582fb4/error-msg-when-sending-email-using-spsenddbmail?forum=transactsql

于 2016-03-04T15:58:27.527 に答える