ストアド プロシージャを使用していくつかの操作を実行し、一部のデータを xls スプレッドシートにエクスポートして、そのスプレッドシートを電子メールで送信する SQL Server エージェント ジョブを実行しています。ほとんどの場合は機能しますが、月に数回、次のエラーでジョブが失敗します。
OLE DB プロバイダー 'Microsoft.Jet.OLEDB.4.0' がエラーを報告しました。プロバイダーは、エラーに関する情報を提供しませんでした。[SQLSTATE 42000] (エラー 7399)。ステップは失敗しました。
詳細なエラー メッセージについて Microsoft に感謝します。いずれにせよ、短期的な修正は通常、単純にジョブを再実行することです。通常、これは機能しますが、まれに機能しない場合があり、SQL Server インスタンスを再起動する必要があります。
私のコードがOLEDBと対話する方法は次のとおりです。
Insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 5.0;Database=\\Excel\POStatus\POStatus.xls;',
'SELECT * FROM [POStatus$]')
Select --Tons of columns with tons of math and functions
FROM --5 tables joined together (left joins)
WHERE -- Tons of where conditions
Order by --Case statement for custom sorting
Set @vCommand = 'copy \\Excel\POStatus\POStatus.xls \\Excel\POStatus\POStatus_' + @vDate + '.xls'
EXEC master..xp_cmdshell @vCommand , NO_OUTPUT
... omitted for brevity...
Set @nvSubject = ' POStatus ' + @vDate
Set @nvMessage = ' This is an automated message, please respond to the IS department, thank you '
Set @nvMessage = @nvMessage + char(13) + char(10)
Set @nvAttachments = '\\Excel\POStatus\POStatus_' + @vDate + '.xls'
Exec master..xp_sendmail
@recipients = @nvRecipients , @copy_recipients = @nvCopy_recipients ,
@subject = @nvSubject , @message = @nvMessage ,
@query = @nvQuery , @width = @iWidth , @attachments = @nvAttachments
では、これは何が原因で、どうすれば防ぐことができるでしょうか。