使用预定作业SQL Agent Management Studio导出为CSV

时间:2017-05-16 00:15:38

标签: sql sql-server tsql csv

我正在尝试创建一个SQL代理作业,该作业每天自动运行以下查询并生成一个CSV文件,该文件存储在C:\ test.csv上,并通过电子邮件发送给人们。

我在网上尝试了各种选项,但找不到适合我查询的选项。它是来自多个数据集的数据,这些数据集放在一个文件中,以便导入到另一个电子表格中进行报告。

感谢任何帮助。

我已经使用执行查询的任务创建了一个SQL作业,并且我尝试使用高级页面上的高级选项来输出文件,但是输出文件没有得到更新。

ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

1 个答案:

答案 0 :(得分:1)

您可以使用xp_cmdshell创建csv文件,但需要先启用它:

EXEC sp_configure 'show advanced options', 1;  
GO  
-- To update the currently configured value for advanced options.  
RECONFIGURE;  
GO  
-- To enable the feature.  
EXEC sp_configure 'xp_cmdshell', 1;  
GO  
-- To update the currently configured value for this feature.  
RECONFIGURE;  
GO  

然后构建您的bcp命令并使用xp_cmdshell

运行它
declare @fileName varchar(4000) = 'C:\Temp\MyFile.csv'
declare @bcpCommand varchar(4000)

SET @bcpCommand = 'bcp "SELECT ' + @HoistSched + ' AS Hoist_Sched_today, ' + @HoistSchedTom + ' as Hoist_Sched_Tom" queryout ' + @fileName + '  -c -t , -r \n  -S . -T'

select @bcpCommand 

EXEC master..xp_cmdshell @bcpCommand

然后使用sp_send_dbmail

通过电子邮件发送文件
EXEC msdb.dbo.sp_send_dbmail 
@profile_name='MyEmailProfileName',
@recipients='fgfh@test.com',
@file_attachments=@fileName

如果您不需要保存文件但只需通过电子邮件发送结果,那么您需要根据查询构建电子邮件正文,并使用@ sp_send_dbmail