作业输出会自行覆盖

时间:2017-07-31 15:13:42

标签: sql sql-server

我研究了这个,我知道SO上也有类似的问题。然而,似乎没有任何帮助足以解决我的问题。

首先,我对SQL很有经验,但我们最近收购了两名实习生。他们现在已经和我们在一个星期了,他们很难阅读代码,所以我想让这个(他们的任务团队的一部分)尽可能简单。

基本上,下面的代码是较大的存储过程的一部分,该存储过程每天早上作为一个作业运行。它应该保存在名为GoodsIN的指定文件夹中作为xlsx。但是,这会每天覆盖自己,而不是生成新的XLSX文件。

@database_name=N'master', 
@output_file_name=N'E:\goodsindata\Goodsin.xlsx', 
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 
1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Daily 
0900',

如果有人可以提供帮助,我会非常感激,正如所提到的那样我们实习生的理想情况,这将尽可能简单易读(最初,我希望它通过电子邮件发送出来,但对他们来说有点太高级了)我会让他们在暑假结束前阅读SQL!

一如既往地感谢大家,

1 个答案:

答案 0 :(得分:1)

附加日期(或其他一些唯一字符串),否则将连续覆盖该文件。

@database_name=N'master', 
@output_file_name=N'E:\Rebekah\PaidClaims' + convert(varchar(10),getdate(),110) + '.xlsx', 
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 
1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Daily 
0900',

这将产生:E:\Rebekah\PaidClaims07-31-2017.xlsx

Here are some other date conversion codes.