У нас есть хранимая процедура, которая должна проверить БД и выбрать все записи, в которых sentFlag находится под номеромКто-нибудь знает, почему этот код отправляет пользователям дубликаты писем?
После записи (ей) найден, хранимая процедура вызывает sp_send_dbmail с передаваемыми параметрами, а затем отправляет по электронной почте пострадавших лиц.
Это, как представляется, работает.
Проблема, которую мы имеем до сих пор, заключается в том, что каждая отдельная информация получает дубликаты писем.
Любые идеи о том, какая часть этого кода может быть причиной этого?
OPEN MAIL_CURSOR
FETCH MAIL_CURSOR into @mail1, @sender,@content1
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @email = @email+';'+Email
FROM GRVRIEVANCES
WHERE sentFlag = 'No'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Grievances',
@recipients = @email,
@subject = 'Account Details',
@body = @content1;
FETCH MAIL_CURSOR INTO @mail1, @sender, @content1
END
CLOSE MAIL_CURSOR
DEALLOCATE MAIL_CURSOR
END
Не уверен, что это * проблема *, но я бы сильно подозревал, что вы не должны просто создавать все больше и больше адресов электронной почты в '@ email', не очищая их. –
@Damien_The_Unbeliever, нет, это не проблема, потому что как только электронное письмо отправляется, тогда sentFlag обновляется и изменяется на 'Да'. Я действительно показывал этот код, потому что не думал, что это относится к проблеме. Спасибо за предложение. – Kenny
Я считаю, что Дэмиен находится на месте. Запустите свой SP, но закомментируйте 'EXEC' и поместите' PRINT @ email'. Результаты должны быть довольно иллюстративными. – gvee