MSSQL定期备份和还原

MSSQL定期备份和还原

   

目录

一、 需求描述

软件版本

1.定期完整备份数据库

2.还原数据库

3.还原数据库到新位置

二、 定期完整备份数据库

1手动完整备份数据库---生产备份SQL脚本

2自动备份主脚本

3发送邮件脚本

4脚本集合

5任务计划

三、 还原数据库

四、 还原数据库到新的位置

   

   

   

   

   

  • 需求描述

软件版本

WindowsWindows 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

       

    备份数据库参考链接

    https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/create-a-full-database-backup-sql-server?view=sql-server-2016

       

  • 脚本集合

    按脚本设定,此脚本文件需解压到C盘根目录

  • 任务计划

    TestBackup_main.bat通过Windows的任务计划调整此脚本,就能实现定期完整备份数据库并发送邮件。

       

       

       

       

       

    • 还原数据库

    还原数据库到原始位置,还原期间数据库不可用。

    不建议。

       

       

    点击OK还原数据库.

    • 还原数据库到新的位置

    还原的目标填写新的数据库名,它不需要也不能提前创建

    其他参考还原到原位置

    https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/restore-a-database-to-a-new-location-sql-server?view=sql-server-2016

猜你喜欢

转载自blog.51cto.com/monty/2643711