2017-07-31 87 views
0

我研究了這一點,我知道這裏也有類似的問題。但是,似乎沒有足夠的幫助來解決我的問題。作業輸出不斷覆蓋本身

首先,我對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 @[email protected], @name=N'Daily 
0900', 

如果有人可以幫助,我真的很感激它,因爲提到我們有實習生在如此理想,這將是容易讀越好(最初,我想通過電子郵件發送出去,但是那是有點太先進爲他們)我會讓他們在夏天結束前閱讀SQL!

感謝一如既往傢伙,

+0

嘛....輸出文件的名稱是硬編碼和靜態的。每次運行時都會覆蓋它。處理這種情況的最常見方式是使用當前日期時間作爲文件名的一部分。 –

+0

偉大的建議肖恩蘭格。謝謝! – JWain

回答

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 @[email protected]obId, @name=N'Daily 
0900', 

這將產生:E:\Rebekah\PaidClaims07-31-2017.xlsx

Here are some other date conversion codes.