如何从带有多个选择语句结果的 SQL 作业发送电子邮件

CR2*_*241 1 sql-server ssms sql-server-agent sql-server-2016

我想创建一个 SQL 作业并发送包含多个选择语句的电子邮件,包括查询结果。是否可以使用 SQL Job 或者我应该使用 SSIS?

编辑1:

EXEC msdb.dbo.sp_send_dbmail  
    @profile_name = 'Adventure Works Administrator',  
    @recipients = '****@abc.com', 
    @Execute_query_database = 'AdventureWorks',
    @query = 'SELECT COUNT(*) FROM AdventureWorks.Production.WorkOrder  
                  WHERE DueDate > '2018-03-30'  
                  AND  DATEDIFF(dd, '2004-04-30', DueDate) < 2
              SELECT * FROM NorthWind.Production.Work  
                  WHERE DueDate > '2018-04-30'  
                  ' ,  
    @subject = 'Work Order Count',  
    @attach_query_result_as_file = 1 ;
Run Code Online (Sandbox Code Playgroud)

错误消息:文件附件或查询结果大小超过了 1000000 字节的允许值。

编辑 2:我觉得 SQL 代理作业没有指向所需的数据库,并且 sp_send_email 没有数据库名称。所以我添加了@Execute_query_database = 'AdventureWorks'但仍然没有改进,因为在 SQL SELECTS 中使用了两个不同的数据库。

有什么想法吗?

Kin*_*hah 6

您基本上是从最大的 sql server 发送 1GB 文件。您可以使用重新配置默认值

exec msdb.dbo.sysmail_configure_sp 'MaxFileSize','2000000'-- 2GB

我会说,使用 bcp 输出文件,使用 zip 或 7zip 压缩它,然后使用 powershell 或 ssis 发送。