Sql-Server-Agent

使用腳本將文件複製到網路共享

  • February 7, 2014

是否有一個簡單的腳本可以用來將特定文件夾中的文件複製到網路共享?這是與 SQL Server 代理一起使用的,因此我可以在備份後將其作為一個步驟執行。

謝謝

這是我用來“歸檔”由 SQL Server 處理的文件的(部分)腳本。我實際上映射了網路驅動器而不是移動到 UNC,因為它更穩定。

需要注意的幾點:

  • 執行 SQL 代理的服務帳戶必須對源和目標都具有權限(我假設目標是您真正需要檢查的,除非代理帳戶無法從本地儲存中刪除)。
  • 該腳本MOVE是文件。如果您想複製它們,那麼我建議您考慮將最後一步中的命令替換為XCOPY
   EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', 
      @type=N'LOCAL',@name=N'[Uncategorized (Local)]'

   IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

   END

   DECLARE @jobId BINARY(16)
   EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'File Mover', 
           @enabled=1, 
           @notify_level_eventlog=0, 
           @notify_level_email=2, 
           @notify_level_netsend=0, 
           @notify_level_page=0, 
           @delete_level=0, 
           @description=N'No description available.', 
           @category_name=N'[Uncategorized (Local)]', 
           @owner_login_name=N'[username]', 
           @notify_email_operator_name=N'alertteam', @job_id = @jobId OUTPUT

   EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Archive Files', 
           @step_id=3, 
           @cmdexec_success_code=0, 
           @on_success_action=1, 
           @on_success_step_id=0, 
           @on_fail_action=2, 
           @on_fail_step_id=0, 
           @retry_attempts=0, 
           @retry_interval=0, 
           @os_run_priority=0, @subsystem=N'CmdExec', 
           @command=N'move \source\path\*.csv \dest\path
   ', 
           @flags=0

引用自:https://dba.stackexchange.com/questions/34416