SQL Server远程局域网定时备份数据库脚本配置指南
解决单机备份失效风险的实用方案:将SQL Server数据库定期自动备份至局域网内其他电脑的共享文件夹中。
远程备份的必要性与原理
常规的定时备份若存储于本机,一旦服务器发生硬件损坏或系统崩溃,备份数据也将随之丢失。为了构建高可用的数据保护机制,必须将备份文件异地(即同局域网内的另一台主机)保存。
其实现原理是利用Windows网络共享机制,在数据库中通过系统扩展存储过程模拟“映射网络驱动器”的操作,随后指向该虚拟盘符进行常规的文件写入备份。
前置条件准备
在执行脚本前,需确保满足以下基础环境:
- 权限要求:执行备份的SQL账户(如sa或特定登录名)对远程共享目录拥有“完全控制”及“写入”权限。
- 网络连通:源服务器能够ping通目标IP地址,且防火墙已放行相应的共享端口(通常为445 TCP)。
- 开启功能:数据库实例已启用
xp_cmdshell扩展存储过程。若默认关闭,需使用sp_configure 'show advanced options', 1;配合reconfigure开启。
第1步:创建远程映射并生成路径变量
目的是建立一个临时的网络驱动关联,并将动态生成的日期时间存入变量,作为备份文件的标识。
- 打开 SQL Server Management Studio (SSMS),新建查询窗口。
- 输入以下代码片段,替换占位符参数:
-- 1. 创建网络映射
-- Y:代表分配的盘符;\192.168.0.69\sqlbackup是共享路径;引号内为密码;账号格式建议保留前缀
exec master..xp_cmdshell 'net use Y: \\192.168.0.69\sqlbackup "password" /user:192.168.0.69\account'
-- 2. 设置带有日期的备份文件名
declare @filename varchar(200)
select @filename = 'Y:\DB\' + replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ','-'),':','') + '.bak'
风险提示:上述命令中的密码以明文形式出现。生产环境中建议仅用于测试环境,或在更高安全要求的场景下采用加密证书验证替代简单的共享密码认证。
第2步:执行数据库备份操作
将备份目的地指向刚才创建的动态变量。
- 继续在同一查询窗口中添加以下语句,并将
[DB]修改为目标数据库名称:-- 3. 执行实际备份
backup database [DB] to disk = @filename
第3步:清理并断开网络连接
任务完成后立即断开映射,释放资源并减少安全隐患。
- 追加最后一行命令:
-- 4. 删除/断开网络映射
exec master..xp_cmdshell 'net use Y: /delete'
结合SQL Server代理实现自动化
手动运行脚本容易遗忘,推荐配置为自动执行的作业:
- 进入 SSMS 左侧对象资源管理器,展开 SQL Server代理 → 作业。
- 右键选择 新建作业,在“常规”页填写名称。
- 在 步骤 页,添加新步骤,类型选
Transact-SQL 脚本(TSQL),将上述全套代码粘贴进去。 - 在 调度 页,定义触发频率(例如每天凌晨 2 点,或每小时一次)。
排错注意事项
- 访问被拒:若报错
系统错误 5,通常是远程共享权限不足或Windows凭据未正确传递,检查 \account 对应的密码是否正确。 - 服务中断:如果在断开
Y:映射时恰好有另一个进程正在使用该路径,会卡死等待,可考虑适当延迟或增加错误捕获逻辑。 - T-SQL 语法:注意字符串拼接时的转义和引号层级,特别是涉及反斜杠
\和双引号"时需保持一致。
总结
通过将网络映射、T-SQL变量命名与标准的 Backup 指令相结合,我们可以低成本地实现异地灾备策略。以上以上就是SQL Server远程定时备份数据库脚本配置的详细内容,更多关于SQL Server远程备份的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













