需求:
做一个数据库数据重置的功能【基于某个已经快照的备份文件每天定时重置】
第一步:创建备份文件
BACKUP DATABASE backxd TO DISK = 'D:\data\back\backxd.bak'
第二步:查询生成的备份文件的LogicalName
RESTORE FILELISTONLY FROM DISK='D:\data\back\backxd.bak'
结果如下:
其中红圈到的LogicalName列中的值之后有用。
第三步:编写通过.bak文件恢复数据库的SQL语句
--获取数据库的独占访问权
ALTER DATABASE backxd SET OFFLINE WITH ROLLBACK IMMEDIATE
--通过.bak文件恢复数据库的SQL语句
USE master
RESTORE DATABASE backxd
FROM DISK = 'D:\data\back\backxd.bak'
WITH REPLACE,
--注意:这里MOVE后面的两个值来自之前第二步查询的LogicalName,TO后面的值是需要恢复的数据库文件及日志文件【红圈那里】
MOVE 'backxd' TO 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\backxd.ndf',
MOVE 'backxd_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\backxd_log.ldf'
GO
--上面部分代码已经通过.bak文件恢复了数据库,下面这句代码将数据库的独占访问权释放
ALTER DATABASE backxd SET ONLINE
以上准备工作就做好,就可以进行设置了。
第四步:为数据库设置定时任务
-
找到数据库的SQL Server代理,如图:
-
展开代理,右键作业选择新建作业,如图:
-
在新建作业窗口左侧选择“常规”,在常规视图中设置名称和说明,如图:
-
在新建作业窗口左侧选择“步骤”,在步骤视图中点击新建,如图:
-
在新建作业步骤窗口左侧选择“常规”,在常规视图中填写步骤名称、数据库、命令,其中命令使用第三步中的代码自行根据情况修改。如图:
注:这里命令可以直接使用第三步的代码,也可以将第三步中的代码封装成一个存储过程(或函数),这里的命令采用执行存储过程(或函数)的代码也行。 -
在新建作业窗口左侧选择高级,在高级视图中注意成功、失败时要执行的操作。这里因为是恢复数据库操作,比较简单,只有一个步骤,所以这里就都选择转到下一步就行。(PS:这里如果做其他任务,情自行视情况而定)。点击确定就新建好了一个步骤。如图:
-
在新建作业窗口左侧选择计划,在右侧新建——为作业设置计划,如图:
注意:选择重复执行,并按需求设置频率和持续时间,最后通过摘要说明来确认设置是否正确。
这样,每天14:37:01就会执行任务了。 -
在新建作业窗口点击确认就可以完成作业的新建。
在设置好之后,测试一下是否成功【把执行时间改为当前时间过几分钟就能看到结果】
遇到问题联系我哟~