【问题标题】:Batch file for auto backup自动备份的批处理文件
【发布时间】:2020-11-30 06:35:40
【问题描述】:

我有一个服务器,我在其中运行一个 SQL Server Express DB 和一个 Azure blob,我每天早上都会上传 SQL Server 的备份。

现在,我已经能够通过混合使用 SQL 查询 + 批处理文件来自动执行备份,并且我已将它安排到我的任务计划程序中,以在每晚晚上 9:00 运行,但我还想移动一份副本从服务器到 Azure 存储的备份。

我已经在任务调度器中尝试了一个批处理文件:

echo off
copy "Z:\Backup\SQLBackup\" "C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Backup\DailyStep_bck.bak"

但它本身不起作用,只有当我手动运行它时。 当前副本每天都应该替换旧的副本,我现在不需要保留旧的备份。

我也尝试过 robocopy,但它也不起作用......有人能告诉我我错过了什么吗?

任务以管理员身份运行,带有“无论管理员是否登录都运行”选项。

感谢您的帮助。

【问题讨论】:

  • 首先,我建议您打开命令提示符窗口,输入copy /?,按[ENTER] 键,然后阅读显示的内容。然后我请你重复一遍,但这次输入robocopy /?,而不是`。
  • 我会改用robocopy,正如@Compo 所提到的,运行robocopy /? 并专门查看帮助的/MIR 部分。
  • 如果没有用户登录,肯定没有映射资源,Z:是映射驱动器吗?尝试完整的unc path 或在脚本顶部使用net use ..pushd .. 来创建临时映射资源。有关更多信息,请参阅 net usepushd 的帮助。另外,如果您使用pushd,最好也使用popd
  • 另外,您可能会发现这有助于加快复制任务dostips.com/forum/…
  • 您的服务器上是否安装了 azure blob?

标签: batch-file azure-sql-database scheduled-tasks backup


【解决方案1】:

我将解决方案总结如下。

Windows 任务计划程序没有安装的 Azure 文件共享驱动器的权限。所以我们需要使用路径https://[Azure_account].file.core.windows.net/storage/Backup来访问Azure文件共享。另外,如果要实现自动上传,可以使用azcopy

例如

  1. Create a sas token for the file share

  2. 脚本

azcopy copy 'C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Backup*.bak' 'https://[Azure_account].file.core.windows.net/storage/Backup/SQLBackup/[backup_file].bak?<sas token>
  1. 创建计划任务

更多详情请参考herehere

【讨论】:

  • 是的,我最后有一个,我必须生成 SAS 令牌,因为我没有那个。现在它可以正常工作了,非常感谢您的帮助,非常感谢。!!!
  • @Core88 既然对你有用,你能接受它作为答案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 1970-01-01
相关资源
最近更新 更多