Sql Server 实现批量备份,批量更新

引言背景

在周三的时候,总监突然找到我,叫我升级一下Sql Server,但是升级前要把数据库备份迁移一下,搞不完加班搞。

内心是崩溃的,手上还有很多个要截单的需求,

都没开发呢,就要做这种麻烦的工作……

打开数据库一看,妈妈呀,有50多个库要迁移……

想象一下手动一个个备份和迁移的工作量,这几乎是不可能在正常工作时间完成的。

所以,为了保住我的周末,为了避免无休止的加班,为了挽救我宝贵的私人时间,为了下班也能自由自在地健身……我决定要把这个过程自动化,让计算机帮我完成这项苦活!

这里记录一下我的自动化备份和迁移过程,也希望可以帮到一些需要帮助的人。

这里就要引入一个重要的工具——sqlcmd!—— SQL Server 的命令行好朋友。


SqlCmd

简介

sqlcmd 是 SQL Server 的一个强大命令行工具,允许用户执行 T-SQL 语句、管理数据库以及执行维护任务。它是自动化 SQL Server 管理任务的理想工具,可以在任何批处理文件中使用。


迁移开始

备份

首先,我们得把所有数据库打包好备份起来,放到要迁移的目标服务器的文件夹去。

一行代码,让电脑为我备份了五十个数据库,我是精通人性的程序猿

@echo off
SETLOCAL EnableDelayedExpansion

:: 你的 SQL Server 实例名称
set serverInstance=你的实例名

:: 备份文件要放的地方,别放服务器桌面,整齐点
set backupDirectory=你的备份目录

:: 这里是要备份的数据库列表,别漏了
set databases=数据库1 数据库2 数据库3 ...

:: 检查备份目录在不在,不在就给我建一个
if not exist "%backupDirectory%" mkdir "%backupDirectory%"

:: 来吧,开始循环,一个个备份
for %%D in (%databases%) do (
    set backupFile=%backupDirectory%%%D.bak
    echo 正在备份 %%D...
    sqlcmd -S %serverInstance% -Q "BACKUP DATABASE [%%D] TO DISK = N'!backupFile!' WITH NOFORMAT, INIT, NAME = N'%%D-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10;"
    echo %%D 备份好了!
)

echo 所有数据库都备份OK了!

 

还原

备份完成后,可能需要在新服务器上把数据库搬家。接着来是还原脚本:

@echo off
SETLOCAL EnableDelayedExpansion

:: 目标 SQL Server 实例名称
set serverInstance=.

:: 备份文件存放的目录
set backupDirectory=你的目录

:: 数据库列表
set databases=数据库1 数据库2 ……

:: 循环数据库列表进行还原
for %%D in (%databases%) do (
    set backupFile=%backupDirectory%%%D.bak
    echo 正在还原数据库: %%D
    sqlcmd -S %serverInstance% -Q "RESTORE DATABASE [%%D] FROM DISK = N'!backupFile!' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10;"
    echo 还原完成: %%D
)

echo 所有数据库都搬完了,关灯锁门,下班走人!

 


结语

通过这些小小的命令行操作,你的数据库就可以安全地搬到新家了,不用加班,不用熬夜!

希望能帮助你节省宝贵的时间,让你在忙碌工作之余也能享受生活。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值