2016-12-07 64 views
0

我的需求: 在每个月的第一天通过电子邮件附件发送查询结果。在SQL Server 2012上每个月的第一天通过电子邮件附件发送查询结果

我一直在做手工工作:

  • 我通过更改日期范围运行此查询每月的第一天。
  • 然后我出口.csv格式所获得的结果,并将其发送csv文件作为附件

我需要建议从你的人我如何将这个过程自动化:

  • 难道我设置在SQL Server 2012上完成一项任务,但是,我必须修改日期范围。

请建议如何前进。

任何帮助,非常感谢。

回答

1

正如您所提到的,创建作业并安排它在每个月的第一天运行。考虑到你对创造工作有足够的知识。

自己的工作性质 - >时刻表 - >并进行以下设置

enter image description here

发生在12:00:00每1个月(一个或多个)的每个第一天。计划将从07-12-2016开始使用 。

根据您的业务需求更改时间(在哪个时间应该在月的第一天运行)。它可以设置为Daily frequency-> Occurs once at:

+0

谢谢@Prdp的内容进行快速响应! –

+0

如何通过电子邮件发送作业运行的查询结果? –

+0

@ChetanHireholi - 查看以下文章https://www.brentozar.com/archive/2014/10/send-query-results-sql-server-agent-job/如果在执行任何问题时提出一个新问题 –

0

该过程也可以通过使用Windows批处理文件的另一种方式实现自动化。您可以使用Windows调度程序对其进行调度。 将在下面的批处理文件

Echo off 
sqlcmd -u <username> -p <password> -S <server name> -d <database name> -i <sql file location> -o <output result file location> 

Powershell.exe -executionpolicy remotesigned -File <location of powershell file> 

PowerShell的文件运行批处理文件时触发电子邮件的内容。 PowerShell的文件

$smtpserver = "<smtp server name>" 
$from="mail id" 
$to="<mail id" 
$a = Get-Date 
$subject= "<subject line> `r"+ $a.Month +"/"+$a.Day +"/"+ $a.Year 
$body="" 
$attachment="File location" 
Thanks,`n " 
$mailer = new-object Net.Mail.SMTPclient($smtpserver) 
$msg = new-object Net.Mail.MailMessage($from,$to,$subject,$body,$data1,$a) 
$msg.IsBodyHTML = $true 
$mailer.send($msg) 
相关问题