Я создал новый профиль электронной почты с суперадминистратором и настроил файл smtp.
Затем, когда я выполняю этот запрос:
exec msdb.dbo.sp_send_dbmail
@profile_name ='admin_mail',
@recipients = '[email protected]',
@execute_query_database = 'DashboardPowerBi',
@query = 'select top 20 from Client_1',
@subject= 'Liste des clients',
@body_format ='HTML',
@attach_query_result_as_file = 1;
Я получаю эту ошибку:
Не удалось инициализировать библиотеку sqlcmd с номером ошибки -2147024809.
Что ж, запрос некорректен. Вам нужно указать, какие столбцы вы выбираете
@query = 'select top 20 * from Client_1',
Но вместо использования «*» на самом деле перечислите нужные столбцы.
У меня также было это сообщение об ошибке. В итоге у меня не было полностью определенных таблиц базы данных в запросе. database.schema.tablename У меня было только имя таблицы.
При поиске у других была эта ошибка, потому что вложенный файл был слишком большим. Вы можете изменить это в SSMS - Management - Database Mail
В моем случае, после того, как я протестировал запрос и инкапсулировал его в строку, я забыл обновить...
'' AS Blank
к
'''' AS Blank
Недавно у меня возникла проблема, связанная с этим, решение здесь состояло в том, чтобы полностью определить базу данных + имя_схемы + имя_таблицы («выбрать * из продаж..продажи_месяц»), даже если вы находитесь в той же базе данных.
С уважением!
Проблема заключается в прямом прохождении запроса в @qry
.
Попробуйте вставить присоединяемую запись в Global TempTable (##Temp) и попробуйте использовать этот сценарий выбора с указанными именами столбцов. Как ниже
DECLARE @qry varchar(8000) = 'SET NOCOUNT ON
SELECT
Column1,
Column2
From ##TEMPEMAIL
SET NOCOUNT OFF'
Я обнаружил, что у вас не может быть квадратных скобок вокруг вашего полного доменного имени, поэтому измените это
SET @sql = 'SELECT field1, field2, etc FROM [DBNAME].[dbo].[Table1]'
вместо этого.
SET @sql = 'SELECT field1, field2, etc FROM DBNAME.dbo.Table1'
-2147024809 — это 0x80070057,
COR_E_ARGUMENT
, что соответствует коду .NET, выдающемуArgumentException
. К сожалению, это само по себе довольно бесполезно для диагностики проблемы.