使用存储过程中的robocopy将文件夹移动到存档/备份位置

时间:2013-12-21 10:06:18

标签: sql-server windows stored-procedures

我们有数十万个文件夹,与数据库中的项目有关。例如房屋。当一个房子已售出超过5个月我有一个SQL作业运行来存档房子但是这样做我需要将相关文件夹移动到存档文件夹。我可以得到houseid的列表并编写一个while循环,但它调用robocopy和我需要的正确命令参数但仍然有一个错误日志。据我所知,我必须在循环中为每个房屋ID启动一个新的robocopy实例。

例如: 上传/ House10001然后用户归档房屋ID 10001所以我需要将文件夹移动到 UploadsArchive / House10001。

如何实现robocopy部分并写入错误日志。

while archivehouses> 0

id =要存档的房屋ID

我需要帮助的是这里的robocopy ...

结束时

感谢大家的帮助。如果有更好的选择,我愿意接受建议。我必须为许多项目执行此操作,而不仅仅是上述示例中的项目。

1 个答案:

答案 0 :(得分:0)

首先我建议不要从SP运行它。原因是您将使用SQL Server堆栈空间而不是单独的进程,并且需要SQL Server服务帐户才能访问您的网络共享。您应该创建一个BATCH文件或包来执行此操作。

您需要调用SQL以使用以下内容获取MOVE文件夹列表:

BCP "Stored Procedure" queryout FolderList.txt -S (local) -T -c

“存储过程”将返回您要移动的每个文件夹的完整路径文件夹名称。 您可以在FOR循环中使用ROBOCOPY或MOVE,如下所示:

FOR /f  %%a IN (FolderList.txt) DO (
    MOVE %%a \\destination\folder
)