Ошибка при использовании OLE-автоматизации для отправки электронной почты CDO в SQL Server 2000 - PullRequest
0 голосов
/ 17 марта 2011

Я вырываю свои волосы на этом.Недавно (около месяца назад) некоторые хранимые процедуры на нашем сервере SQL 2000 перестали отправлять электронные письма.У нас есть несколько версий одного и того же хранимого процесса в разных базах данных, которые все сломались одновременно (я понимаю, что это плохой дизайн, но это не то, что я хочу обсудить:))

Хранимые процедуры используют ole-автоматизациюотправлять электронные письма.например,

EXEC @resultcode = sp_OACreate 'CDO.Message', @iMsg OUT
EXEC @resultcode = sp_OASetProperty @iMsg, 'To', 'someguy@domain.com'

Теперь по какой-то причине sp_OASetProperty не работает при установке свойств 'To', 'From', 'Subject' или 'TextBody' .@iMsg не NULL, поэтому создание работает.Также sp_OASetProperty по-прежнему работает для нескольких других свойств:

EXEC @resultcode = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
EXEC @resultcode = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', 'smtp.domain.com'

Код результата, который возвращается при сбое sp_OASetProperty, равен -2147220991.Использование sp_OAGetErrorInfo возвращает следующую информацию.Ошибка: 0x80040201, Источник: NULL, Описание: Исключение 0xc0000005 было сгенерировано по адресу ...

Некоторая другая информация, которая затрудняет отладку:

  • происходит только на сервере Prod, тестируем, тестируем, работаем и работаем с машинами все в порядке (и все используют один и тот же SMTP-сервер)
  • Хранимые процедуры не были изменены в последнее время, они просто сломались один день (и мы некоторое время не замечали, так что трудноточно укажите, какие другие изменения были сделаны за это время)
  • Я написал быстрое приложение DotNet и поместил его на сервер для проверки подключения к электронной почте, и оно работало нормально
  • Я попытался заменить свою локальную "odsole70".dll "файл с файлом с сервера, и он все еще работал нормально, так что я не верю, что это поврежденный dll
  • Я нашел в Google любую возможную комбинацию всей информации, которую я добавил сюда, но нетбезрезультатно

1 Ответ

0 голосов
/ 24 марта 2011

Оказывается, в сервер обмена были внесены некоторые изменения. Перезапуск службы SQL решил проблему. Вероятно, это было замечено только как проблема на производстве, потому что тестовые серверы перезагружались чаще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...