SQLSERVER大数据库备份与还原

合集下载

sqlserver 数据库备份方法

sqlserver 数据库备份方法

sqlserver 数据库备份方法SQL Server是一款常用的关系型数据库管理系统,用于存储和管理大量的数据。

在使用SQL Server数据库时,数据备份是非常重要的一项工作,可以保证数据的安全性和可恢复性。

本文将介绍SQL Server数据库备份的方法和步骤。

一、全备份全备份是最常用和最基本的备份方式,它将数据库的所有数据和日志都备份到一个文件中。

全备份可以保证数据库的完整性和一致性,同时也可以通过全备份文件来恢复数据库。

进行全备份的步骤如下:1. 打开SQL Server管理工具,连接到目标数据库实例。

2. 在“对象资源管理器”中选择要备份的数据库。

3. 右键点击选中的数据库,选择“任务”-“备份”。

4. 在“备份数据库”对话框中,选择“备份类型”为“完整”,并选择备份文件的路径和名称。

5. 点击“确定”按钮,开始备份数据库。

二、差异备份差异备份是基于全备份的增量备份方式,它只备份上次全备份之后发生变化的数据和日志。

差异备份可以减少备份文件的大小和备份时间,同时也方便了数据恢复操作。

进行差异备份的步骤如下:1. 打开SQL Server管理工具,连接到目标数据库实例。

2. 在“对象资源管理器”中选择要备份的数据库。

3. 右键点击选中的数据库,选择“任务”-“备份”。

4. 在“备份数据库”对话框中,选择“备份类型”为“差异”,并选择备份文件的路径和名称。

5. 点击“确定”按钮,开始备份数据库。

三、事务日志备份事务日志备份是备份SQL Server数据库的事务日志信息,可以用于恢复数据库到某个特定时间点的状态。

事务日志备份可以提供更精确的数据恢复能力,同时也可以释放事务日志空间。

进行事务日志备份的步骤如下:1. 打开SQL Server管理工具,连接到目标数据库实例。

2. 在“对象资源管理器”中选择要备份的数据库。

3. 右键点击选中的数据库,选择“任务”-“备份”。

4. 在“备份数据库”对话框中,选择“备份类型”为“事务日志”,并选择备份文件的路径和名称。

SQLServer数据库有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式

SQLServer数据库有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式

SQLServer数据库有三种恢复模式:简单恢复模式、完整恢复模式和⼤容量⽇志恢复模式SQL Server数据库有三种恢复模式:简单恢复模式、完整恢复模式和⼤容量⽇志恢复模式:1.Simple 简单恢复模式,Simple模式的旧称叫”Checkpoint with truncate log“,其实这个名字更形象,在Simple模式下,SQL Server会在每次checkpoint或backup之后⾃动截断log,也就是丢弃所有的inactive log records,仅保留⽤于实例启动时⾃动发⽣的instance recovery所需的少量log,这样做的好处是log⽂件⾮常⼩,不需要DBA去维护、备份log,但坏处也是显⽽易见的,就是⼀旦数据库出现异常,需要恢复时,最多只能恢复到上⼀次的备份,⽆法恢复到最近可⽤状态,因为log丢失了。

Simple模式主要⽤于⾮critical的业务,⽐如开发库和测试库,但是道富这边的SQL Server(即使是⽣产库)⼤都采⽤Simple模式,是因为这边的SQL Server⼤都⽤于⾮critical的业务(critical的数据库⼤都采⽤Oracle和DB2),可以忍受少于1天的数据丢失(我们的job每天都会定时备份全库)。

如果需要压缩数据库⽇志(Shrink语句),将数据库模式切换到简单恢复模式后压缩率才是最⾼的,如果你的数据库在完整恢复模式或⼤容量⽇志回复模式下采⽤⽇志压缩,压缩后的⽇志⼤⼩并不会很理想。

2.Full 完整恢复模式,和Simple模式相反,Full模式的旧称叫”Checkpoint without truncate log“,也就是SQL Server不主动截断log,只有备份log之后,才可以截断log,否则log⽂件会⼀直增⼤,直到撑爆硬盘,因此需要部署⼀个job定时备份log。

Full的好处是可以做point-in-time恢复,最⼤限度的保证数据不丢失,⼀般⽤于critical的业务环境⾥。

SQLServer:用SQL语句还原数据库(withmove选项用法)

SQLServer:用SQL语句还原数据库(withmove选项用法)

SQLServer:用SQL语句还原数据库(withmove选项用法)SQL Server:用 SQL 语句还原数据库(with move 选项用法)SQL Server:用 SQL 语句还原数据库(with move 选项用法)SQL Server:用 SQL 语句还原数据库(with Move 选项用法)。

当我们把服务器A上的一个数据库备份后,在服务器B上还原的时候,直接restore 的时候,大多情况下都会出错,可能的原因是数据库的文件(数据和日志)在不同服务器上所在的 path 不同。

这时候就需要 restore with move 选项,来把数据库文件还原到目标 path 中。

with move 的详细语法:MOVE 'logical_file_name' TO 'operating_system_file_name' [ ,...n ]当我在把SQL Server 2000 Instance(实例)中的数据库Nortwind,还原到 SQL Server 2005 Instance 中的时候,也需要使用 restore with move 选项来进行还原。

1. 查看 SQL Server 2000 中 Northwind 数据库文件的逻辑文件名(logical file name)和物理文件路径(operation system file name):use Nothwindgoselect name, filename, * from dbo.sysfilesname filename-------------- ------------------------------------------------------------------Northwind d:\program files\microsoft sql server\mssql$sqla\data\northwnd.mdfNorthwind_log d:\program files\microsoft sql server\mssql$sqla\data\northwnd.ldf2. 备份 SQL Server 2000.Northwind 数据库backup database Northwind to disk = 'c:\Northwind.bak'3. 在 SQL Server 2005 Instance 中还原 Northwind 数据库。

sqlserver数据库迁移的几种方式

sqlserver数据库迁移的几种方式

sqlserver数据库迁移的几种方式
最近在公司上班,有时候需要将公司服务器上的数据库copy到自己电脑上带回家,心情好的时候加会小班嘛。

很多朋友可能像本人一样不会,或者不熟悉如何快速的迁移数据库。

方法一:脚本法
如果你的数据库每天都有更新,而且今天改动量不大,可以将你所有的改动弄成脚本,放到本地数据库执行即可。

就行一般公司开发写数据库发布脚本一样。

方法二:备份与还原法
在服务器的数据库中选中要转移的数据库,按鼠标右键,选所有任务->备份数据库;将备份copy到本地,选中本地已有的数据库(没有需要新建)右键→任务→还原数据库。

找到你copy下来的.bak文件即可,值得提醒是,有时候会出现错误:2个数据库不是一个数据库。

这种情况点→选项勾上覆盖现有数据库即可。

方法三:如果只是将服务器上的数据库copy到本地数据库,则右键→导出数据,按照向导导到对应的本地数据库(前提是本地数据库没有数据,如果有数据,他不会覆盖会出现2条相同的记录),而且完了之后还得到处所有的函数和存储过程,所以该方法不推荐。

方法四:附加法
首先分离数据库连接,然后将数据库文件(.mdf文件)copy到本地,然后右键→附加找到该.mdf文件即可。

sqlserver备份的几种方式

sqlserver备份的几种方式

SQL Server备份的几种方式包括:
1. 数据库整库备份:此方式备份数据库是最完整的,可以将数据库中所有的对象都备份下来生成.bak文件。

后续如果出现问题,可以直接通过.bak文件还原数据库,但备份的耗时会比较长,并且占用磁盘空间会比较大。

2. 通过生成脚本的方式单表备份:有时候业务系统的更新可能只涉及到一张表或者几张表,此时可以通过对每个数据表进行单表备份的方式来操作,只备份这几张涉及到变更操作的数据表。

3. 通过Select Into语句将一个表快速备份到一个临时新表中。

此备份方法是将查找出来的数据快速写入到指定的备份新表中,自动创建table。

以上方式仅供参考,如需更多信息,建议咨询专业的计算机技术人员。

SQLServer2019数据库备份与还原脚本,数据库可批量备份

SQLServer2019数据库备份与还原脚本,数据库可批量备份

SQLServer2019数据库备份与还原脚本,数据库可批量备份前⾔最近公司服务器到期,需要进⾏数据迁移,⽽数据库属于多⽽繁琐,通过图形化界⾯⼀个⼀个备份所需时间成本很⼤,所以想着写⼀个sql脚本来执⾏。

开始1. 数据库单个备份2. 数据库批量备份3. 数据库还原4. 数据库还原报错问题记录5. 总结1.数据库单个备份图形化界⾯备份这⾥就不展⽰了,可以⾃⾏百度,下⾯直接贴代码USE MASTERIF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[BackupDataProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )DROP PROCEDURE BackupDataProcgocreate proc BackupDataProc@FullName Varchar(200)--⼊参(数据库名)asbeginDeclare @FileFlag varchar(50)Set @FileFlag='C:\myfile\database\'+@FullName+'.bak'--备份到哪个路径(C:\myfile\database\)根据⾃⼰需求来定BackUp DataBase @FullName To Disk=@FileFlag with init--核⼼代码endexec BackupDataProc xxx执⾏成功后便会⽣成⼀个.bak⽂件到指定⽂件夹中,如图2.数据库批量备份(时间有点长,请等待)USE MASTERif exists(SELECT * FROM sys.types WHERE name = 'AllDatabasesNameType')drop type AllDatabasesNameTypegocreate type AllDatabasesNameType as table--⾃定义表类型⽤于存储数据库名称(rowNum int ,name nvarchar(60),filename nvarchar(300))goIF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[BachBackupDataProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )DROP PROCEDURE BachBackupDataProcgocreate proc BachBackupDataProc@filePath nvarchar(300)--⼊参,备份时的⽬标路径asbeginDeclare @AllDatabasesName as AllDatabasesNameType --⽤于存储系统中的数据库名Declare @i int --循环变量insert into @AllDatabasesName(name,filename,rowNum) select name,filename,ROW_NUMBER() over(order by name) as rowNum from sysdatabases where name not in('master','tempdb','model','msdb') --赋值set @i =1--循环备份数据库while @i <= (select COUNT(*) from @AllDatabasesName)beginDeclare @FileFlag varchar(500)Declare @FullName varchar(50)Select @FullName =name from @AllDatabasesName where rowNum = @iSet @FileFlag=@filePath+@FullName+'.bak'BackUp DataBase @FullName To Disk=@FileFlag with initset @i = @i + 1endendexec BachBackupDataProc 'C:\myfile\database\'执⾏结果效果如下图:3.数据库还原IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[ReductionProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )DROP PROCEDURE ReductionProcgocreate proc ReductionProc@Name nvarchar(200)--⼊参数据库名称asbeginDeclare @DiskName nvarchar(500)Declare @FileLogName nvarchar(100)Declare @FileFlagData nvarchar(500)Declare @FileFlagLog nvarchar(500)Set @FileLogName = @Name + '_log'Set @DiskName = 'C:\myfile\database\'+@Name+'.bak' ---(源)备份⽂件路径Set @FileFlagData='C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\'+@Name+'.mdf'---(⽬标)指定数据⽂件路径Set @FileFlagLog='C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\'+@FileLogName+'.ldf'---⽬标)指定⽇志⽂件路径RESTORE DATABASE @Name --为待还原库名FROM DISK = @DiskName ---备份⽂件名WITH MOVE @Name TO @FileFlagData, ---指定数据⽂件路径MOVE @FileLogName TO @FileFlagLog, ---指定⽇志⽂件路径STATS = 10, REPLACEendgoexec ReductionProc xxx执⾏后便能还原库(我是拿这三个库做测试,截的图可能没什么变化,你们可以尝试下)4.数据库还原报错问题记录当然还原的过程可能会遇到⼀些问题,⽐如:1.版本不⼀样2.SQL Sql 逻辑⽂件'XXXXX ' 不是数据库'YYY'的⼀部分。

Sqlserver数据库备份与还原

Sqlserver数据库备份与还原

Sqlserver数据库备份与还原⼀、数据库存储概述1、数据⽂件类型· Primary data files:每个数据库都有⼀个单独的主要数据⽂件,默认以.mdf扩展名。

主要数据⽂件不仅包含数据信息,还包含与该数据库结构相关的信息。

创建数据库时,数据库结构相关信息不仅存在于master数据库中,同时还包含在primary data file上.· Secondary data files⼀个数据库可以有⼀个或者多个⼆级数据⽂件,默认以.ndf为扩展名。

⼀般来说⼆级数据⽂件并不是必须的,因为⼆级数据⽂件不包含⽂件位置等信息。

· Transaction logs: 数据库必须⾄少有⼀个事务⽇志⽂件,默认以.ldf为扩展名。

⽇志是整个数据库的命脉,事务⽇志不可读的话,将⽆法对数据库进⾏任何操作。

当你在数据库上进⾏数据操作时,数据并不是直接写⼊数据⽂件,⽽是先将相关操作信息写⼊事务⽇志⽂件。

当⼀个事务结束时,该事务被标记为已提交,但这也并不意味着数据从⽇志⽂件写⼊了数据⽂件中。

⼀个标记为已提交的事务仅仅意味着所有与该事务相关的元素已经成功完成。

The buffer cache may be updated, but not necessarily the data file.检查点(checkpoint)会周期性的发⽣。

检查点发⽣时,是确认所有已提交的事务,不管是在buffer cache或者事务⽇志中,都被写⼊相关的数据⽂件中。

检查点(checkpoint)可以通过以下⽅式来触发:1、显⽰调⽤checkpoint命令;2、Recover Interval 实例设置的周期达到(⽤来标识多久发⽣⼀次checkpoint)3、做了数据库备份(在简单模式下);4、数据库⽂件结构被改变(在简单模式下);5、数据库引擎被结束。

⼀般来说,写数据的过程是由系统⾃动完成的,如下图所⽰,但数据并不是直接写⼊.mdf或者.ndf ⽂件中,⽽是先将有关变化写⼊事务⽇志中,这也是数据库中的write-ahead机制。

SQLSERVER差异备份无法还原的解决

SQLSERVER差异备份无法还原的解决

无法还原日志备份或差异备份,因为没有文件可用于前滚—还原SQLSERVER数据库差异备份解决1.利用SQL MANAGEMENT STUDIO软件来恢复差异备份时遇到的问题其实要备份,还原最安全最有保障的是完全备份。

但是完全备份肯定是需要更多的磁盘空间的开销。

尤其是数据量比较大的。

比如基数是500M,每天的增长量为10M,那么第一次完全备份是500M,第二次是510M,第三次是520M……成本相应的肯定就增加了很多。

如果使用差异备份,那么第一次完备后的差异备份就只是第天所增长的量。

能减少很多磁盘的开销。

但是还原差异备份比还原完整备份稍微要麻烦一些。

还原差异备份需要一个完整备份,以及最新一个差异备份文件。

操作如下。

选择完整备份文件,在常规操作中选择“覆盖现有数据库(with replce)”与下面的单选项的第二项"[ √ ]不对数据库执行任何操作,不回滚未提交的事务。

可以还原其他事务日期(A)。

(restore with norecovery"点击确定。

会提示还原成功。

但是现在数据还没有还原到数据库中,数据库会一直显示为以下图显示的状态右建再执行还原任务,选择最新的一个差异备份。

上面大图所显示的操作不要选择,直接点确定就可以了。

数据就完全恢复到数据库了。

2.利用SQL语句进行还原restore database xxxx from disk='c:\dump\xxxx.bak' with norecovery;restore log xxxx from disk='c:\dump\xxxxlog.bak' with norecovery;restore database xxxx with recovery名词解释:完全备份:备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件。

(在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份,换言之,清除存档属性)。

Sqlserver2005数据备份还原恢复常用方法

Sqlserver2005数据备份还原恢复常用方法

SQLSERVER2005数据库备份、还原及数据恢复内容一、目的说明-------------------------------------------------------------------- 错误!未定义书签。

二、备份数据库步骤 ----------------------------------------------------------- 错误!未定义书签。

三、还原数据库步骤 ----------------------------------------------------------- 错误!未定义书签。

四、数据库数据恢复步骤------------------------------------------------------ 错误!未定义书签。

五、数据库压缩 ----------------------------------------------------------------- 错误!未定义书签。

六、常见异常处理 -------------------------------------------------------------- 错误!未定义书签。

七、总结 ------------------------------------------------------------------------- 错误!未定义书签。

八、附录:----------------------------------------------------------------------- 错误!未定义书签。

一、目的说明数据库备份是维护数据正确,防止数据丢失的重要手段。

备份点恢复策略可以让数据还原到备份点,通过触发备份的方法,可以提高备份的有效性;采用即时点备份策略,可将数据恢复到任意点,提高数据的安全性;通过性能警报监视事务日志使用情况,及时优化日志文件,可以提高系统性能。

数据库备份与还原详解.

数据库备份与还原详解.

数据库备份与还原详解.对于在SQL Server2000中的还原数据库,很多朋友都是使用过的,一起来也很简单,选择文件后,选择强制还原,问题即可解决,然而在2005中却不行了,原因是:2005中数据库的备份中记录了备份数据库的地址,在你还原的过程中,你必须将此地址换成你电脑上要还原的数据库的地址。

详细过程如下:第一步:选择要还原的数据库第二步:选择备份文件。

选择“源设备”,点击文本框右边的按钮“...”,在弹出的对话框中选择数据库的备份.注意:文件格式要选择“所有文件”。

第三步:选择图片左上角的“常规”,出席下面的对话框,红线包围处的路径是备份文件数据库的位置,必须换成你的数据库所在的位置。

第四步:更改了数据库的位置后,就可以更新了! SQL2005 数据库的备份(手工备份和维护自动备份和还原英文版(详细的图解和文字默认分类 2010-07-16 17:29:37 阅读343 评论0字号:大中小订阅一 SQL2005 数据库的备份(一手工备份手工备份,是最直接的数据库备份,也是最简单的备份,只要你点击要备份的数据库,右键属性-->任务-->备份,然后在打开的对话框内设置,然后确定一下,就OK了,它一个不太好的地方,就是直接备份,如果是默认的话,会覆盖前一个备份的bak,如下图,整个操作过程:--------------------------------->>>第二步 ,默认设置,完整备份,--------------------->>第三步,如下:已经备份好了二,现在讲一下"数据库还原"上面既然有备份了数据库,万一运行中的数据库出问题,或数据受到攻击,那么此时你就要还原数据库了,对于还原sql2005比较麻烦,有几个细节要注意,第一:要"恢复中的单用户模式问题",否则会出现“数据库正在使用,所以无法获得对数据库的独占访问权”这样的提示,还原不了,原因:这是因为在还原数据库时,有其他用户正在使用数据库。

Java实现SqlServer及MySql的备份与还原(经典版)

Java实现SqlServer及MySql的备份与还原(经典版)

Java实现Sqlserver及MySql的备份与还原注:本人是采用Struts1做的一个简单小例子。

实现步骤:1.数据库基类package com.wingo.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/***@ClassName:DataBaseUtil*@Description:TODO*@author莫希柏*@date Jul4,20122:21:41PM*/public class DataBaseUtil {/***@Description:获取数据库连接*@author莫希柏*@date Jul4,20122:23:11PM*/public static Connection getConnection() {Connection conn = null;try {Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=datatest";String username = "sa";String password = "sa";conn = DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}/***@Description:关闭*@author莫希柏*@date Jul4,20122:22:57PM*/public static void closeConn(Connection conn) { if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}2.action类package com.wingo.action;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.sql.CallableStatement;import java.sql.PreparedStatement;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction;import com.wingo.util.DataBaseUtil;public class DataAction extends DispatchAction{ /***@Description:SqlServer备份*@author莫希柏*@date Jul4,20122:45:16PM*/public ActionForward doSqlServerBackUp(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception {String mssqlBackupName=request.getParameter("mssqlBackupName");//自定义备份数据库名String mssqlBackupPath=request.getParameter("mssqlBackupPath");//自定义备份数据库保存路径String dbName="datatest";//被备份的数据库名称boolean flag=false;try {File file = new File(mssqlBackupPath);String path = file.getPath() + "\\"+ mssqlBackupName + ".bak";//备份生成的数据路径及文件名String bakSql = "backup database "+dbName+" to disk=? with init";//备份数据库SQL语句PreparedStatement bak = DataBaseUtil.getConnection().prepareStatement(bakSql);bak.setString(1, path);//path必须是绝对路径bak.execute(); //备份数据库bak.close();flag=true;} catch (Exception e) {flag=false;e.printStackTrace();}response.setCharacterEncoding("utf-8");try {if(flag==true){response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份成功!');document.location.href='DataAction.do?action=toBackIndex';</script>");}else{response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份失败!');document.location.href='DataAction.do?action=toBackIndex';</script>");}} catch (IOException e) {e.printStackTrace();}return null;}/***@Description:SqlServer还原*@author莫希柏*@date Jul4,20124:28:05PM*/public ActionForward doSqlServerRecovery(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response){boolean flag = false;String mssqlRecoveryPath =request.getParameter("mssqlRecoveryPath"); //被还原数据库文件的路径String dbname="datatest";//数据库名称try{File file = new File(mssqlRecoveryPath);String path = file.getPath();//数据库文件名String recoverySql = "ALTER DATABASE "+dbname+" SET ONLINE WITHROLLBACK IMMEDIATE";// 断开所有连接 PreparedStatement ps= DataBaseUtil.getConnection().prepareStatement(recoverySql);CallableStatement cs= DataBaseUtil.getConnection().prepareCall("{call killrestore(?,?)}"); //调用存储过程cs.setString(1, dbname); // 数据库名cs.setString(2, path); // 已备份数据库所在路径cs.execute(); // 还原数据库ps.execute(); // 恢复数据库连接flag=true;} catch (Exception e) {flag=false;e.printStackTrace();}response.setCharacterEncoding("utf-8");try {if(flag==true){response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份成功!');document.location.href='DataAction.do?action=toBackIndex';</script>");}else{response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份失败!');document.location.href='DataAction.do?action=toBackIndex';</script>");}} catch (IOException e) {e.printStackTrace();}return null;}/***@Description:MySql备份*@author莫希柏*@date Jul4,20124:39:02PM*/public ActionForward doMySqlBackUp (ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){boolean flag=false;try {Runtime rt = Runtime.getRuntime();String mySqlBackupName=request.getParameter("mySqlBackupName");//mysql 自定义数据库备份名称String mysqlBackupPath=request.getParameter("mysqlBackupPath");//mysql 自定义数据库备份保存路径String fPath=mysqlBackupPath+mySqlBackupName+".sql";String command="C:/Program Files/MySQL/MySQL Server5.0/bin/mysqldump -uroot -p123456 datatest";//调用 mysql的cmd:Process child = rt.exec(command);// 设置导出编码为utf8。

sqlserver数据库的备份与恢复sql实现

sqlserver数据库的备份与恢复sql实现

sqlserver数据库的备份与恢复sql实现sqlserver数据库的备份与恢复sql实现利用T-SQL语句,实现数据库的备份与还原的功能体现了SQL Server中的四个知识点:1.获取SQL Server服务器上的默认目录2.备份SQL语句的使用3.恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理4.作业创建SQL语句的使用/*1.--得到数据库的文件目录@dbname 指定要取得目录的数据库名如果指定的数据不存在,返回安装SQL时设置的默认数据目录如果指定NULL,则返回默认的SQL备份目录名*//*--调用示例select 数据库文件目录=dbo.f_getdbpath('tempdb'),[默认SQL SERVER数据目录]=dbo.f_getdbpath(''),[默认SQL SERVER备份目录]=dbo.f_getdbpath(null)--*/if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[f_getdbpath]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_getdbpath]GOcreate function f_getdbpath(@dbname sysname)returns nvarchar(260)assqlserver数据库的备份与恢复sql实现begindeclare @re nvarchar(260)if @dbname is null or db_id(@dbname) is nullselect @re=rtrim(reverse(filename)) from master..sysdatabases where name='master' elseselect @re=rtrim(reverse(filename)) from master..sysdatabases where name=@dbnameif @dbname is nullset @re=reverse(substring(@re,charindex('/',@re)+5,260))+'BACKUP' elseset @re=reverse(substring(@re,charindex('/',@re),260))return(@re)endgo/*2.--备份数据库*//*--调用示例--备份当前数据库exec p_backupdb @bkpath='c:/',@bkfname='db_/DATE/_db.bak'--差异备份当前数据库exec p_backupdb@bkpath='c:/',@bkfname='db_/DATE/_df.bak',@bktype='DF' --备份当前数据库日志exec p_backupdb@bkpath='c:/',@bkfname='db_/DATE/_log.bak',@bktype='LOG' --*/if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[p_backupdb]') and __(id, N'IsProcedure') = 1) sqlserver数据库的备份与恢复sql实现drop procedure [dbo].[p_backupdb]GOcreate proc p_backupdb@dbname sysname='', --要备份的数据库名称,不指定则备份当前数据库@bkpath nvarchar(260)='', --备份文件的存放目录,不指定则使用SQL 默认的备份目录@bkfname nvarchar(260)='', --备份文件名,文件名中可以用/DBNAME/代表数据库名,/DATE/代表日期,/TIME/代表时间@bktype nvarchar(10)='DB', --备份类型:'DB'备份数据库,'DF' 差异备份,'LOG' 日志备份@appendfile bit=1 --追加/覆盖备份文件asdeclare @sql varchar(8000)if isnull(@dbname,'')='' set @dbname=db_name()if isnull(@bkpath,'')='' set @bkpath=dbo.f_getdbpath(null)if isnull(@bkfname,'')='' set@bkfname='/DBNAME/_/DATE/_/TIME/.BAK' set@bkfname=replace(replace(replace(@bkfname,'/DBNAME/',@dbname) ,'/ DATE/',convert(varchar,getdate(),112)),'/TIME/',replace(convert(varchar,getdate(),108),':',''))set @sql='backup '+case @bktype when 'LOG' then 'log ' else'database ' end +@dbname+' to disk='''+@bkpath+@bkfname+''' with '+case @bktype when 'DF' then '__NTIAL,' else '' end+case @appendfile when 1 then 'NOINIT' else 'INIT' endprint @sqlexec(@sql)go/*3.--恢复数据库sqlserver数据库的备份与恢复sql实现/*--调用示例--完整恢复数据库exec p_RestoreDb @bkfile='c:/db_2022年1015_db.bak',@dbname='db'--差异备份恢复exec p_RestoreDb@bkfile='c:/db_2022年1015_db.bak',@dbname='db',@retype='DBNOR'exec p_backupdb @bkfile='c:/db_2022年1015_df.bak',@dbname='db',@retype='DF'--日志备份恢复exec p_RestoreDb@bkfile='c:/db_2022年1015_db.bak',@dbname='db',@retype='DBNOR'exec p_backupdb @bkfile='c:/db_2022年1015_log.bak',@dbname='db',@retype='LOG'--*/if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[p_RestoreDb]') and __(id, N'IsProcedure') = 1) drop procedure [dbo].[p_RestoreDb]create proc p_RestoreDb@bkfile nvarchar(1000), --定义要恢复的备份文件名@dbname sysname='', --定义恢复后的数据库名,默认为备份的文件名@dbpath nvarchar(260)='', --恢复后的数据库存放目录,不指定则为SQL的默认数据目录@retype nvarchar(10)='DB', --恢复类型:'DB'完事恢复数据库,'DBNOR' 为差异恢复,日志恢复进行完整恢复,'DF' 差异备份的恢复,'LOG' 日志恢复@filenumber int=1, --恢复的文件号@overexist bit=1, --是否覆盖已经存在的数据库,仅@retype为@killuser bit=1 --是否关闭用户使用进程,仅@overexist=1时有效asdeclare @sql varchar(8000)sqlserver数据库的备份与恢复sql实现--得到恢复后的数据库名if isnull(@dbname,'')=''select @sql=reverse(@bkfile),@sql=case when charindex('.',@sql)=0 then @sqlelse substring(@sql,charindex('.',@sql)+1,1000) end,@sql=case when charindex('/',@sql)=0 then @sqlelse left(@sql,charindex('/',@sql)-1) end,@dbname=reverse(@sql)--得到恢复后的数据库存放目录if isnull(@dbpath,'')='' set @dbpath=dbo.f_getdbpath('')--生成数据库恢复语句set @sql='restore '+case @retype when 'LOG' then 'log ' else'database ' end+@dbname +' from disk='''+@bkfile+''''+' with file='+cast(@filenumber as varchar)+case when @overexist=1 and @retype in('DB','DBNOR') then',replace' else '' end +case @retype when 'DBNOR' then ',__ERY' else ',__Y' end print @sql--添加移动逻辑文件的处理if @retype='DB' or @retype='DBNOR'begin--从备份文件中获取逻辑文件名declare @lfn nvarchar(128),@tp char(1),@i int--创建临时表,保存获取的信息create table #tb(ln nvarchar(128),pn nvarchar(260),tp char(1),fgn nvarchar(128),sz numeric(20,0),Msz numeric(20,0))--从备份文件中获取信息insert into #tb exec('restore filelistonly from disk='''+@bkfile+'''')declare #f cursor for select ln,tp from #tbopen #fsqlserver数据库的备份与恢复sql实现set @i=0while @@fetch_status=0beginselect @sql=@sql+',move '''+@lfn+''' to'''+@dbpath+@dbname+cast(@i as varchar) +case @tp when 'D' then '.mdf''' else '.ldf''' end,@i=@i+1fetch next from #f into @lfn,@tpendclose #fdeallocate #fend--关闭用户进程处理if @overexist=1 and @killuser=1begindeclare @spid varchar(20)declare #spid cursor forselect spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)open #spidwhile @@fetch_status=0beginexec('kill '+@spid)fetch next from #spid into @spidendclose #spiddeallocate #spidend--恢复数据库exec(@sql)gosqlserver数据库的备份与恢复sql实现/*4.--创建作业*//*--调用示例--每月执行的作业exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month'--每周执行的作业exec p_createjob @jobname='ww',@sql='select * from syscolumns',@freqtype='week'--每日执行的作业exec p_createjob @jobname='a',@sql='select * from syscolumns'--每日执行的作业,每天隔4小时重复的作业exec p_createjob @jobname='b',@sql='select * fromsyscolumns',@fsinterval=4--*/if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[p_createjob]') and __(id, N'IsProcedure') = 1) drop procedure [dbo].[p_createjob]GOcreate proc p_createjob@jobname varchar(100), --作业名称@sql varchar(8000), --要执行的命令@dbname sysname='', --默认为当前的数据库名@freqtype varchar(6)='day', --时间周期,month 月,week 周,day 日@fsinterval int=1, --相对于每日的重复次数@time int=__ --开始执行时间,对于重复执行的作业,将从0点到23:59分asif isnull(@dbname,'')='' set @dbname=db_name()sqlserver数据库的备份与恢复sql实现--创建作业exec msdb..sp_add_job @job_name=@jobname--创建作业步骤exec msdb..sp_add_jobstep @job_name=@jobname,@step_name = '数据处理',@subsystem = 'TSQL',@database_name=@dbname,@command = @sql,@retry_attempts = 5, --重试次数@retry_interval = 5 --重试间隔--创建调度declare @ftype int,@fstype int,@ffactor intselect @ftype=case @freqtype when 'day' then 4when 'week' then 8when 'month' then 16 end,@fstype=case @fsinterval when 1 then 0 else 8 endif @fsinterval1 set @time=0set @ffactor=case @freqtype when 'day' then 0 else 1 end EXEC msdb..sp_add_jobschedule @job_name=@jobname, @name = '时间安排',@freq_type=@ftype , --每天,8 每周,16 每月@freq_interval=1, --重复执行次数@freq_subday_type=@fstype, --是否重复执行@freq_subday_interval=@fsinterval, --重复周期@freq_recurrence_factor=@ffactor,@active_start_time=@time --下午17:00:00分执行go/*--应用案例--备份方案:sqlserver数据库的备份与恢复sql实现完整备份(每个星期天一次)+差异备份(每天备份一次)+日志备份(每2小时备份一次)调用上面的存储过程来实现--*/declare @sql varchar(8000)--完整备份(每个星期天一次)set @sql='exec p_backupdb @dbname=''要备份的数据库名'''exec p_createjob @jobname='每周备份',@sql,@freqtype='week'--差异备份(每天备份一次)set @sql='exec p_backupdb @dbname=''要备份的数据库名'',@bktype='DF'' exec p_createjob @jobname='每天差异备份',@sql,@freqtype='day'--日志备份(每2小时备份一次)set @sql='exec p_backupdb @dbname=''要备份的数据库名'',@bktype='LOG''exec p_createjob @jobname='每2小时日志备份',@sql,@freqtype='day',@fsinterval=2/*--应用案例2生产数据核心库:__备份方案如下:1.设置三个作业,分别对__库进行每日备份,每周备份,每月备份2.新建三个新库,分别命名为:每日备份,每周备份,每月备份3.建立三个作业,分别把三个备份库还原到以上的三个新库。

sql server备份方法

sql server备份方法

sqlserver备份方法
在SQLServer中,备份方法主要包括以下几种:
1.完整备份:完整备份会备份整个数据库,包括所有数据、事务日志和所有系统对象。

这种备份类型恢复时间最短,但备份文件通常也最大。

2.差异备份:差异备份只备份自上次完整备份以来发生更改的数据。

差异备份的大小比完整备份小,但恢复时间会稍微长一些,因为它需要先应用完整备份,然后应用差异备份。

3.事务日志备份:事务日志备份只备份事务日志中的内容。

它允许你执行数据库的点时间恢复,比如恢复到某一特定时间点的状态。

4.文件和文件组备份:这种备份方式只备份数据库的特定文件或文件组。

5.部分备份:部分备份是针对数据库的可读可写部分进行的备份。

6.只复制备份:只复制备份不会破坏原有的备份序列。

进行备份时,应考虑数据库的大小、变化的频率以及可用的存储空间等因素。

对于大型数据库或需要频繁更改的数据库,可能需要使用多种备份策略的组合来确保数据的完整性和安全性。

同时,建议定期测试备份文件,以确保在真正需要恢复时它们是可用的。

SQLServer定时、实时备份恢复的方法

SQLServer定时、实时备份恢复的方法

SQLServer定时、实时备份/恢复的方法(一)使用TSql代码自动备份在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库。

而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库。

要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业。

(1)启动SQL Server Agent服务(确保SQL Server Agent服务以经启动)。

(2)在SSMS的对象资源管理中“SqlServer 管理”节点下面选择作业。

然后在其中新建作业(3)为作业添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL 语句,该语句实现了对数据库TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是TestDB1+当时备份的日期字符串.bak。

(4)创建好步骤以后,接下来就是创建计划。

创建计划比较简单,按照你的需求选择执行周期和时间间隔,按照创建计划页面来设置就行(二)界面操作自动备份使用SQL作业中执行SQL脚本进行备份的方法虽然已经很简单了,但是至少还是要去写BACKUP脚本,这点有些人觉得不爽,那有没有更简单,更懒的方法来实现数据库的自动定时备份呢?有,那就是“维护计划”。

“维护计划”是在SSMS的对象资源管理中“管理”节点下面。

使用维护计划可以通过可视化的操作,只点点鼠标就可以创建数据库维护的SSIS包,然后仍然是通过SQL Server作业的方式来运行。

维护计划与前面说到的备份方法本质的不同就是:维护计划是SSIS包,上面的是T-SQL脚本。

假设我们现在有一个生产系统的数据库需要进行备份,由于数据库中的数据很多,数据文件很大,如果每次都进行完整备份那么硬盘占用了很大空间,而且备份时间很长,维护起来也很麻烦。

对此我们可以采用完整备份+差异备份的方式,每周日进行一次完整备份,每天晚上进行一次差异备份。

sqlserver数据库还原步骤

sqlserver数据库还原步骤

sqlserver数据库还原步骤
嘿,朋友们!今天咱就来讲讲 SQL Server 数据库还原的那些事儿。

这就好比你有一个宝贝箱子,不小心给弄丢了里面的东西,现在咱得
想办法把它们都找回来,还得原模原样地放回去。

首先,你得找到之前备份好的数据库文件,这就像是找到了打开宝
贝箱子的钥匙。

没有这把钥匙,后面的事儿可就没法干啦!
然后呢,打开 SQL Server 管理工具,就像打开了进入宝藏之地的大门。

在里面找到“还原数据库”这个选项,这可是关键的一步哦。

接下来,选择要还原的数据库,这就好比你在众多箱子中准确地找
到了你要的那一个。

可别选错啦,不然可就乱套咯!
再然后,指定备份文件的位置,就像是给宝箱找到了正确的钥匙孔。

这一步可得仔细点,别找错地方啦。

接着,设置一些还原的选项,比如还原的方式啦,覆盖现有数据库
还是另存为新的啦,这就像是给宝贝箱子重新布置里面的东西,得安
排得妥妥当当的。

在这过程中,你可得瞪大了眼睛,别出啥岔子。

就好像你在小心翼
翼地摆放珍贵的瓷器,稍有不慎可就碎啦!
还原的过程可能会有点漫长,就像一场漫长的旅程,但别着急,耐
心等待。

等啊等,终于,数据库还原成功啦!就好像你终于找回了丢
失的宝贝,那种喜悦感,简直无与伦比!
想想看,如果没有这些步骤,我们的数据不就像断了线的风筝,不
知道飘到哪里去啦?所以说啊,这 SQL Server 数据库还原步骤可太重
要啦,咱可得牢牢记住,不然到时候抓瞎可就麻烦咯!大家说是不是呀?反正我觉得这可是关系到我们数据安全的大事,马虎不得!现在,你们都学会了吗?。

SqlServer命令方式备份与还原

SqlServer命令方式备份与还原

SqlServer命令⽅式备份与还原1.备份⼀个bak⽂件,其中database_name为数据库名,⽬录路径需要存在。

这是完整备份。

BACKUP DATABASE[database_name]TO DISK='D:\database_name.bak'2.检查备份⽂件的逻辑信息,主要为LogicName,⼀个是数据⽂件mdf,⼀个是⽇志⽂件ldfRESTORE FILELISTONLYFROM DISK='D:\database_name.bak';3.还原数据库RESTORE DATABASE[database_name]FROM DISK='D:\database_name.bak'若还原到本地,且改名的需求,可⽤以下命令,其中Move后的字符串,为第⼆部中查询到的逻辑名LogicName RESTORE DATABASE[database_name]FROM DISK='D:\database_name.bak'WITHMOVE 'database_name'TO'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\new_database_name.mdf', MOVE 'database_name_log'TO'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\new_database_name_log.ldf', STATS =10,REPLACE其他⼏个常⽤命令--脱库,使数据库离线,不会有其他链接上来ALTER DATABASE[database_name]SET OFFLINE WITH ROLLBACK IMMEDIATE--挂载,是数据库重新上线ALTER DATABASE[database_name]SET ONLINE--当数据库显⽰正在恢复中,是⽤该命令可恢复正常RESTORE DATABASE[database_name]WITH RECOVERY--当数据库显⽰单⽤户,该命令修改为多⽤户正常模式ALTER DATABASE[database_name]SET MULTI_USER差异备份BACKUP DATABASE[database_name]TO DISK='D:\database_name_diff.bak'WITH DIFFERENTIAL镜像备份BACKUP DATABASE[database_name]TO DISK='D:\database_name_mirror1.bak'MIRRORTO DISK='D:\database_name_mirror2.bak'WITH FORMAT。

挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)

挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)

挺好⽤的SQLSERVER数据库⾃动备份⼯具SQLBackupAndFTP(功能全⾯)挺好⽤的SQLSERVER数据库⾃动备份⼯具SQLBackupAndFTP(功能全⾯)这个⼯具主要就是⾃动备份数据库,⼀键还原数据库,发送备份数据库⽇志报告到邮箱,⾃动压缩备份好的数据库定期执⾏数据库备份任务,取代SSMS的维护计划,上传数据库备份⽂件到FTP服务器、其他⽹络硬盘等软件有免费和付费两种模式,不过本⼈觉得免费版本的功能已经⾜够了⽀持SQLSERVER版本:SQLSERVER2000、SQLSERVER2005、SQLSERVER2008、SQLSERVER2008 R2、SQLSERVER2012当你的电脑是 SQL Server Express 2005 and SQL Server Express 2008版本的时候特别有⽤因为SQLSERVER Express版本没有维护计划,使⽤SQLBackupAndFTP可以解决这个问题这个⼯具也有MYSQL版本安装路径:C:\Program Files\\SQLBackupAndFTP安装⽬录下主要都是⼀些DLLSQLBackupAndFTP会新建⼀个Windows服务,⽤来定时备份数据库,取代SSMS的维护计划,我们公司开发的数据库备份软件也是使⽤Windows服务的⽅式来定时备份数据库的,其实这些软件的原理差不多看到上⾯这些图⽚,我相信想破解这款软件的⼈开始蠢蠢欲动了,不过最好不要破解,尊重⼀下别⼈⼤家使⽤免费版本就⾏了,最好不要破解他的付费功能⼀些设置选项⾸先设置数据库连接勾选中要备份的数据库设置邮件,把备份报告发到邮箱设置定时任务,可以设置完整备份,差异备份,事务⽇志备份,还可以设置使⽤系统任务计划来运⾏定时任务还是使⽤软件的Windows服务来运⾏软件本⾝也预设了⼀些定时选项,⽤⿏标点击⼀下就可以应⽤了设置备份选项,包括⼤型数据库临时⽂件存放路径,压缩备份⽂件选项,是否校验备份⽂件,备份数据库⽇志存放路径,加密备份⽂件(收费)我把备份数据库⽇志和⼤型数据库临时⽂件的路径都设置在D:\MSSQL\Databackup设置了上⾯的备份路径之后还需要回到主界⾯设置备份路径,备份数据库⽂件可以上传到FTP服务器,DROPBOX,SKYDRIVE(要付费)等我把备份⽂件放到与备份数据库⽇志同⼀路径下 D:\MSSQL\Databackup软件还可以设置⾃动删除多久以前的备份⽂件,还可以备份到远程路径,NAS存储上,如果是⽹络路径,可以点击“Test”按钮测试是否连通设置FTP全部设置完毕之后可以把配置保存起来,当重装软件,或者换了机器之后就不⽤再设置了导出配置⽂件设置好之后可以点击“run now”按钮⼿动执⾏备份,以后就会按照定时任务设置⾥的设置计划去执⾏数据库备份操作了打开邮箱就能看到邮件了在路径下可以看到⽇志和已经压缩了的备份⽂件⽇志1>>> run 2013-09-1513:00:25by Administrator23 SqlBackupAndFtp 9.0.28.41473 Free (started manually) at xxx (Microsoft Windows NT 6.1.7600.0) (.NET: 2.0.50727.4927, 3.0.30729.4926, 3.5.30729.4926, 4.0.30319)4 xxx name: C:\xxxx\Desktop\new.jobx56 SUMMARY:7Database GPOSDB: Folder - Success89 DETAILED LOG:1009/15/201313:00:19 Creating backup of GPOSDB to D:\MSSQL\Databackup (full)1109/15/201313:00:20 Verifying backup file GPOSDB201309151300.bak1209/15/201313:00:20 Compressing (internal zip) GPOSDB201309151300.bak to D:\MSSQL\Databackup1309/15/201313:00:21 Compression completed (archive: "GPOSDB201309151300.zip", size: 885 KB)1409/15/201313:00:21 Removing GPOSDB201309151300.bak from D:\MSSQL\Databackup1509/15/201313:00:21 Connecting to D:\MSSQL\Databackup1609/15/201313:00:21File GPOSDB201309151300.zip is already on the destination1709/15/201313:00:21 Disconnecting from D:\MSSQL\Databackup1809/15/201313:00:21 Cleaning D:\MSSQL\Databackup1909/15/201313:00:21 Connecting to D:\MSSQL\Databackup2009/15/201313:00:21 Cleaning destination folder2109/15/201313:00:21 Disconnecting from D:\MSSQL\Databackup2209/15/201313:00:21 Job finished23 Sending report to xxxx@ (SMTP)View Code可以看到备份⽂件⼤⼩为5.1MB,压缩之后是886KB,压缩⽐例挺⾼的⼀键还原数据库点击还原按钮选择数据库备份⽂件的路径如果数据库正在使⽤中,他会问你是否终⽌数据库的所有进程点击"是"还原成功主要功能限制定时任务只⽀持2个数据库,不过这些功能限制对于我本⼈来讲影响不⼤o(∩_∩)o SQLBackupAndFTP软件介绍到这⾥了~如有不对的地⽅,欢迎⼤家拍砖o(∩_∩)o。

SQLSERVER数据库备份的三种策略及语句

SQLSERVER数据库备份的三种策略及语句

SQLSERVER数据库备份的三种策略及语句1.全量数据备份备份整个数据库,恢复时恢复所有。

优点是简单,缺点是数据量太⼤,⾮常耗时全数据库备份因为容易实施,被许多系统优先采⽤。

在⼀天或⼀周中预定的时间进⾏全数据库备份使你不⽤动什么脑筋。

使⽤这种类型的备份带来的问题是⾮常缺乏灵活性,⽽且当数据库被冲掉后,你⾯临丢失⼤量数据的潜在威胁。

例如,假设你每天在午夜备份数据库。

如果服务器在晚上11点崩溃了,你将丢失前⾯23个⼩时对数据所做的全部修改。

对⼤多数系统来说,这是⽆法接受的。

对此规则,为数不多的例外如下:1.系统中所存的数据可以很容易地再创建。

这类服务器中⼀个很好的例⼦是报表服务器,其中所存的所有数据都由⼀个批处理过程装载的。

如果这个数据库被冲掉了,你只需要再运⾏⼀次这个批处理过程,所有数据就可以恢复了。

2.不经常修改的数据库。

⼀个例⼦是被收集存储在数据中⼼或数据仓库的历史数据。

通常,查询这些数据以判断趋势,但是这些数据极少被修改。

3.⼀个遥远的站点,那⾥很少或没有数据库管理员⽀持。

这种类型的站点常常依靠没受过⾜够培训的⼈来维持备份计划,并且他还从事其他⼯作。

通常最好保证实施的备份计划⾮常简单,不必让那些⽤户监视和维护它。

4.系统中所存数据的重要性很低。

⼀个很好的例⼦是开发⽤服务器。

在这些类型的服务器上,开发者通常装载⼀些旧的或假定的数据来测试应⽤程序。

这类数据库每天的备份是可接受的。

Sql语句:BACKUP DATABASE [wxh] TO DISK = N'C:\Program Files\Microsoft SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\wxh.bak' WITH NOFORMAT, NOINIT, NAME = N'wxh-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 102.增量数据备份(Differential Backups)所谓增量,就是以某个起始时间点的全量数据为基础,备份该时间点以后的数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、SQL数据库的备份:
1、依次打开开始菜单→程序→Microsoft SQL Server 2008 →SQL Server Management Stud io →数据库:Dsideal_school_db既是我们需要备份的学籍数据库
图(1)
2、选择要备份的数据库“Dsideal_school_db”,点击鼠标右键→任务→备份,如图(2):
图(2)
3、在打开的“备份数据库—Dsideal_school_db”对话框中,先点击删除,然后点击“添加”,如图(3):
图(3)
4、在弹出的“选择备份目标”对话框中,如图(4)
图(4)
5、选择好备份的路径(如D盘的-学籍-数据库备份文件夹中),文件类型选择“所有文件”,“文件名”那个位置填写上您要备份的数据库的名字(最好在您备份的数据库的名字后面加上日期,以方便以后查找),之后连续点击“确定”按钮即可完成数据库的备份操作,如图(5):
图(5
二、SQL数据库的还原:
1、选择您要还原的数据库“Dsideal_school_db”,点击鼠标右键→任务→还原→数据库,如图(6):
图(6)
2、在出现的“还原数据库—school_web_db”对话框中选择“源设备”,然后点击后面的“…”按钮,如图(7):
图(7)
3、在出现的“指定备份”对话框中,点击“添加”按钮,如图(8):
图(8)
4、找到数据库备份的路径,选择您所要还原的数据库“Dsideal_school_db”(注意:文件类型选择所有文件),然后连续“两次”点击“确定”按钮,如图(9):
图(9)
5、在出现的“还原数据库—Dsideal_school_db”对话框中,勾选上“选择用户还原的备份集”下的数据库前的复选框,如图(10)
图(10)
6、然后选择“选项”,勾选上“覆盖现有数据库”,如图(11):
图(11)
三、还原数据库问题解决方案
在还原数据库“Dsideal_school_db”时,有时会遇见上图中的问题“因为数据库正在使用,所以无法获得对数据库的独占访问权”,此时我们可以按照以下步骤解决此问题
1、右键数据库“Dsideal_school_db”,然后选择“属性”,如下图
2、在出现的“数据库属性—Dsideal_school_db ”对话框中,选择“选项”,在“其他选项”下的“状态”中找到“限制访问”。

选择“SINGLE_USER”,点击“确定”按钮,如下图:
标准文案
3、按照正常还原数据库的步骤,还原数据库。

大全。

相关文档
最新文档