1、创建Windows任务
控制面板 -> “查看方式”切换到“大图标”模式 -> 管理工具 ->
任务计划程序 -> 创建任务... -> 任务名称( backup_dbFinance) -> 切换到“操作”选项卡 -> 新建... ->
浏览需要执行的程序(选择新建的backup.cmd文件) -> 切换到“触发器”选项卡 -> 新建... -> 设置执行时间
2、新建backup.cmd文件,内容如下:
sqlcmd -S iZ251rc6j9iZ -E -i d:\backup\backup.sql
注意:
iZ251rc6j9iZ:数据库服务器名称
d:\backup\backup.sql:sql脚本目录地址
3、新建backup.sql文件,内容如下:
DECLARE @BackupName VARCHAR(200)
SET @BackupName = 'd:\backup\dbFinance' + convert(nvarchar(10),GETDATE(),120) + '.bak'
BACKUP DATABASE dbFinance
TO DISK = @BackupName
4、删除30天之前备份文件:
EXECUTE master.dbo.xp_delete_file 0,N'd:\backup',N'bak',@OLD_DATE,1
解释说明:
DECLARE @OLD_DATE DATETIME
SET @OLD_DATE = GETDATE() - 30
EXECUTE MASTER.dbo.xp_delete_file
0, --0: 备份文件,1: 维护计划文本报告
N'd:\backup\', --文件路径
N'bak', --文件扩展名
@OLD_DATE, --在此时间之前的文件一律删除
1 --删除子文件夹中的文件
5、新建backup.sql文件(备份 + 删除N天之前备份文件),内容如下:
DECLARE @BackupName VARCHAR(200)
DECLARE @OLD_DATE DATETIME
SET @OLD_DATE = GETDATE() - 30
SET @BackupName = 'd:\dbBackup\dbFinance' + convert(nvarchar(10),GETDATE(),120) + '.bak'
BACKUP DATABASE dbFinance TO DISK = @BackupName
EXECUTE master.dbo.xp_delete_file 0,N'd:\backup',N'bak',@OLD_DATE,1
注意:建议就用D:\backup目录,换了一个目录(D:\dbBackup),莫名其妙的执行失败。O~~M~~G~~
6、还原数据库
还原方法1:
选择“数据库”三个字 -> 右键 -> 还原数据库 -> 设备 -> 浏览(...) -> 添加 -> 选择bak文件 -> 确定
注意:如果提示错误,选择“选项”选项卡 -> 复选框选中状态“覆盖现有数据库(WITH REPLACE)(O)”
RESTORE DATABASE dbArchive
FROM DISK = N'E:\dbArchive2016-11-14.bak' WITH REPLACE, NOUNLOAD, STATS = 10
控制面板 -> “查看方式”切换到“大图标”模式 -> 管理工具 ->
任务计划程序 -> 创建任务... -> 任务名称( backup_dbFinance) -> 切换到“操作”选项卡 -> 新建... ->
浏览需要执行的程序(选择新建的backup.cmd文件) -> 切换到“触发器”选项卡 -> 新建... -> 设置执行时间
2、新建backup.cmd文件,内容如下:
sqlcmd -S iZ251rc6j9iZ -E -i d:\backup\backup.sql
注意:
iZ251rc6j9iZ:数据库服务器名称
d:\backup\backup.sql:sql脚本目录地址
3、新建backup.sql文件,内容如下:
DECLARE @BackupName VARCHAR(200)
SET @BackupName = 'd:\backup\dbFinance' + convert(nvarchar(10),GETDATE(),120) + '.bak'
BACKUP DATABASE dbFinance
TO DISK = @BackupName
注意:建议就用d:\backup目录,换了一个目录(D:\dbBackup),莫名其妙的执行失败O~~M~~G~~
4、删除30天之前备份文件:
EXECUTE master.dbo.xp_delete_file 0,N'd:\backup',N'bak',@OLD_DATE,1
解释说明:
DECLARE @OLD_DATE DATETIME
SET @OLD_DATE = GETDATE() - 30
EXECUTE MASTER.dbo.xp_delete_file
0, --0: 备份文件,1: 维护计划文本报告
N'd:\backup\', --文件路径
N'bak', --文件扩展名
@OLD_DATE, --在此时间之前的文件一律删除
1 --删除子文件夹中的文件
5、新建backup.sql文件(备份 + 删除N天之前备份文件),内容如下:
DECLARE @BackupName VARCHAR(200)
DECLARE @OLD_DATE DATETIME
SET @OLD_DATE = GETDATE() - 30
SET @BackupName = 'd:\dbBackup\dbFinance' + convert(nvarchar(10),GETDATE(),120) + '.bak'
BACKUP DATABASE dbFinance TO DISK = @BackupName
EXECUTE master.dbo.xp_delete_file 0,N'd:\backup',N'bak',@OLD_DATE,1
注意:建议就用D:\backup目录,换了一个目录(D:\dbBackup),莫名其妙的执行失败。O~~M~~G~~
6、还原数据库
还原方法1:
选择“数据库”三个字 -> 右键 -> 还原数据库 -> 设备 -> 浏览(...) -> 添加 -> 选择bak文件 -> 确定
注意:如果提示错误,选择“选项”选项卡 -> 复选框选中状态“覆盖现有数据库(WITH REPLACE)(O)”
高版本中有“关闭到目标数据库的现有连接”选项,如下图:
低版本中没有“关闭到目标数据库的现有连接”选项,如下图:
还原时可能还提示“System.Data.SqlClient.SqlError: 因为数据库正在使用,所以无法获得对数据库的独占访问权”。解决方法如下:
选中要还原的数据库 --> 右键属性 --> 选项 --> 状态 --> 限制访问 -->
将“MULTI_USER”改为“SINGLE_USER”(此时数据库就会显示为单用户模式) --> 然后再重新执行还原数据库操作。
RESTORE DATABASE dbArchive
FROM DISK = N'E:\dbArchive2016-11-14.bak' WITH REPLACE, NOUNLOAD, STATS = 10
GO
5、还原数据库时,提示还原成功,可是数据库列表提示“正在还原...”的处理办法
RESTORE DATABASE 数据库名称 WITH RECOVERY