Вопрос

EXEC msdb.dbo.sp_send_dbmail 
@recipients= 'test@test.com',
@copy_recipients = 'test@test.com', 
@query = 'SELECT * FROM INSERTED',
@attach_query_result_as_file = 1,
@subject = 'Auto-Generated Deleted Item in Order Item Detail', 
@body = 'Item has been deleted from Order Item Detail', 
@body_format = 'HTML',
@importance = 'High'

При выполнении вышеуказанного кода я получаю следующую ошибку:

MSG 22050, Уровень 16, состояние 1, строка 0 Форматирование ошибок, вероятно, неверные параметры MSG 14661, уровень 16, состояние 1, процедура SP_SEND_DBMAIL, Строка 495 Выполнение Запрос. Неверное имя объекта «Вставлено».

Приведенное ниже работает: (как мне изменить для вставки?)

    EXEC msdb.dbo.sp_send_dbmail 
@recipients= 'test@test.com',
@copy_recipients = 'test@test.com',
@query = 'SELECT * FROM [PreMfg].[dbo].[Order Item Detail Audit]', 
@subject = 'An Item Has Been Deleted From the Order Item Detail Table',
@attach_query_result_as_file = 1, 
@body = 'An Item Has Been Deleted From the Order Item Detail Table', 
@body_format = 'HTML',
@importance = 'High'
Это было полезно?

Решение

Вы не можете ссылаться на вставленную псевдо-таблицу извне триггера. И вы действительно хотите отправить электронное письмо для каждого вставки/обновления? И сделать транзакцию, которая вызвала триггер, ожидайте, чтобы все это произошло (хотя почта базы данных асинхронна, это не бесплатно)?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top