У меня есть таблица с идентификатором входа в систему, у которого нет имени домена при отправке почты, она должна автоматически получать имя домена для отправки почты в sql, я использовал ниже запрос, мне нужно автоматически добавлять @ xxx.com в почту получателя .. начинать
Use [register ]
DECLARE @Receipientlist varchar(8000)
SET @ReceipientList =
STUFF((SELECT ';' + Manager_Login_Id FROM dbo.Idea FOR XML PATH('')),1,1,'')
SELECT
Idea_Id,Login_Id,Manager_Login_Id,Idea_Date_Of_Submission,Idea_Status ='PENDING'
FROM
dbo.Idea
WHERE
Manager_Login_Id IS NOT NULL and Idea_Date_Of_Submission <= DATEADD(day, -5, GETDATE());
EXEC msdb.dbo.sp_send_dbmail
profile_name = '',
recipients = @Receipientlist,
body = 'The DB has changed',
subject = 'DB Change';


Если ваша первая переменная @RecipientList содержит пользователей ДОМЕН, вы можете просто объединить почтовый домен с Manager_Login_Id.
Use [register ]
DECLARE @Receipientlist varchar(8000)
SET @ReceipientList =
STUFF((SELECT ';' + Manager_Login_Id+'@xxx.com ' FROM dbo.Idea FOR XML PATH('')),1,1,'')
SELECT
Idea_Id,Login_Id,Manager_Login_Id,Idea_Date_Of_Submission,Idea_Status ='PENDING'
FROM
dbo.Idea
WHERE
Manager_Login_Id IS NOT NULL and Idea_Date_Of_Submission <= DATEADD(day, -5, GETDATE());
EXEC msdb.dbo.sp_send_dbmail
profile_name = '',
recipients = @Receipientlist,
body = 'The DB has changed',
subject = 'DB Change';
значения таблицы не затрагиваются, поскольку вы делаете это в переменной (@Receipientlist). Если sp_send_mail выходит из строя, вы должны опубликовать сообщение об ошибке.
почта поставлена в очередь, но в журнале писем отображается сообщение о невозможности отправки почты с указанием получателя.
@AshokHoskera это означает, что ваш запрос не дает ожидаемого результата: попробуйте заменить команду exec msdb.dbo.sp_send_dbmail на SELECT ReceipientList и проверьте текущее значение.
Я объединил, но не хочу, чтобы значения таблиц были затронуты. Ниже используется код, запрос выполнен успешно, но не может отправлять почту.