MSSQL定期备份和还原
目录
- 需求描述
软件版本
Windows:Windows 2012 R2
MSSQL: 2016
-
定期完整备份数据库
1)定期备份
2)备份完成后,自动发送邮件
-
还原数据库
还原数据库
-
还原数据库到新位置
还原数据库到一个新的数据库
- 定期完整备份数据库
- 手动完整备份数据库---生产备份SQL脚本
-
连接到相应的 Microsoft SQL Server 数据库引擎实例.
-
完整备份数据库
右键单击要备份的数据库,指向"任务",再单击"备份..." 。
在"备份类型"下拉列表中,选择所需的备份类型,默认值为"完整"
选择script保存备份脚本到文件,自动定期备份需要引用此SQL脚本。
-
自动备份主脚本
TestBackup_main.bat
@echo off
@rem 定位到Backup.sql所在目录
pushd "C:\test_Backup\script"
@rem SQLCMD调走Backup.sql备份test库并生成备份日志
SQLCMD -E -dtest -S WIN-2U9FFPRUOAT -iBackup.sql -o C:\test_Backup\Log\test_Backup.log
@rem 发送邮件
call Sendmail_test.bat
exit
以上脚本保存为bat,通过任务计划调走。
- 发送邮件脚本
-
使用126邮箱发送邮件的Powershell脚本
Sendmail_testDB.ps1
##########Define Variables########
$From = "发件人地址@126.com"
$To = "收件人地址@126.com"
$Subject = "test Backup Results"
$Body = "Please see attachment"
$smtpServer = "smtp.126.com"
$smtpPort = 25
$username = "邮件地址"
$password = "授权码"
$attachment = New-Object System.Net.Mail.Attachment("C:\test_Backup\Log\test_Backup.log")
$SMTPMessage = New-Object System.Net.Mail.MailMessage($From, $To, $Subject, $Body)
$SMTPMessage.Attachments.Add($attachment);
$SMTPClient = New-Object Net.Mail.SmtpClient($smtpServer, $SmtpPort)
$SMTPClient.EnableSsl = $false
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($username, $password);
$SMTPClient.Send($SMTPMessage)
###########Define Variables########
################################################################################
-
使用批处理调整Powershell发邮件的脚本
Sendmail_test.bat
@echo off
pushd %~dp0
powershell.exe -command ^
"& {set-executionpolicy Remotesigned -Scope Process; .'.\Sendmail_testDB.ps1' }"
popd
exit
备份数据库参考链接
-
脚本集合
按脚本设定,此脚本文件需解压到C盘根目录
-
任务计划
TestBackup_main.bat通过Windows的任务计划调整此脚本,就能实现定期完整备份数据库并发送邮件。
- 还原数据库
还原数据库到原始位置,还原期间数据库不可用。
不建议。
点击OK还原数据库.
- 还原数据库到新的位置
还原的目标填写新的数据库名,它不需要也不能提前创建。
其他参考还原到原位置