JAVA实现SQLSERVER及MYSQL的备份与还原(经典版)

合集下载

数据库 备份恢复sqlserver mysql

数据库 备份恢复sqlserver mysql

用jsp实现SQLServe数据库的备份和恢复备份:发送sql给mssqlserver:backup database to disk='备份文件名' with init注意: 1.备份文件名必须为绝对路径,2.备份文件只能是mssqlserver所在的机器上的路径, mssql支持备份到网络位置。

恢复:restore database from disk='备份文件名' with replace要注意的是执行restore database时,要恢复的数据库必须没有任何客户端连接,包括自身(发起restore database命令的连接)。

发使用restore,可以连接到master库,然后再发送restore 命令。

否则,一定失败。

在jsp中如何用呢------------------------------------ 你用这个了!<%先要连接上Connection对象!就是要先和数据库建立起连接然后在jsp页面中直接用我这样的语句就可以了try{String sql="backup database xncsims to disk='d:\\xncback.dat'";st=con.createStatement();rs=st.executeQuery(sql);}catch(SQLException e){ System.out.println(e.toString());}catch(Exception e){ System.out.println(e.toString());}%>rs=st.executeQuery(sql);这里就是把你的SQL语句发到数据库执行mysql://导出String mysql="mysqldump -uroot -proot --opt databasename > d:/test.sql"; ng.Runtime.getRuntime().exec("cmd /c " mysql);导入:String mysql="mysqladmin -uroot -proot create databasename";ng.Runtime.getRuntime().exec("cmd /c " mysql);path="mysql databasename < d:/test.sql";ng.Runtime.getRuntime().exec("cmd /c " path);。

SQLServer——SQLServer备份与恢复

SQLServer——SQLServer备份与恢复

SQLServer——SQLServer备份与恢复1、动手备份2、动手还原3、T-SQL语句备份及还原BACKUP DATABASERESTORE FILELISTONLY FROM DISK代码示例-- 打开设置当前数据库use mastergo-- 默认创建数据库create database SQLDBgo-- 打开设置当前数据库use SQLDBgoSQLDB-- 在当前数据库创建表create table sqltable(empid char(20) not null primary key,empname char(8) not null,empbd datetime not null default getdate())go-- 将数据信息插入到表中insert into sqltable(empid,empname) values('101','张三') insert into sqltable(empid,empname) values('102','李四') insert into sqltable(empid,empname) values('103','王五') insert into sqltable(empid,empname) values('104','赵三') insert into sqltable(empid,empname) values('105','周北') go-- 查询输出表中所有的记录select *from sqltablego-- 将数据库备份到磁盘设备use SQLDBgobackup database SQLDBto disk='d:\SQLDB.bak'with format,medianame='SQLDB',name='full backup of SQLDB'go-- 还原数据库文件use mastergorestore database SQLDBss from disk='d:\SQLDB.bak' go。

SQLServer数据库的备份和恢复方法

SQLServer数据库的备份和恢复方法

SQLServer数据库的备份和恢复方法作为一名数据库管理员,数据库的备份和恢复是非常重要的工作之一。

数据库是企业中最重要的信息资产之一,如果因为故障或其他原因导致数据丢失,会给企业带来不可估量的损失。

为了避免这种情况的发生,我们需要定期备份数据库,并且掌握好相应的恢复方法。

一、备份方法1、全备份全备份,即备份整个数据库,包括数据文件、事务日志和所有的元数据信息。

全备份是最完整的一种备份方式,备份出来的文件可以还原整个数据库。

全备份的方法和语法如下:BACKUP DATABASE database_name TO backup_device [WITH options];其中,backup_device指备份的目录和文件名,options包括NOFORMAT、NOINIT、NAME、SKIP、REWIND和FORMAT 等选项,可以根据需要进行配置。

例如:BACKUP DATABASE AdventureWorks2016 TO DISK ='C:\AdventureWorks2016.bak' WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2016-Full Database Backup', SKIP, REWIND, NOUNLOAD, STATS = 10这条命令会将AdventureWorks2016数据库备份到C盘下的AdventureWorks2016.bak文件中,同时还指定了一些选项,比如不要在备份设备上格式化或初始化任何内容,备份名称为AdventureWorks2016-Full Database Backup等。

2、差异备份差异备份,即备份自上次全备份以来发生过更改的数据。

差异备份的好处是备份时间较短,备份文件也较小,但同时也需要保证有完整的全备份文件存在。

差异备份的方法和语法如下:BACKUP DATABASE database_name TO backup_device [WITH DIFFERENTIAL];其中,WITH DIFFERENTIAL表示进行差异备份。

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数据库备份与还原的实现步骤

SqlServer数据库备份与还原的实现步骤

SqlServer数据库备份与还原的实现步骤⽬录问题描述SqlServer数据库备份步骤SqlServer数据库还原步骤其它问题描述 最近需要给程序新增功能,⽤于将旧格式的数据转换为新格式,同时删除旧格式的数据(新旧格式的数据库表有部分重叠,同⼀份数据⽆法同时存在新旧格式的数据),由于测试环境中的测试数据不多,功能调试⼏次之后就没有旧格式的数据做测试了,因此想到在功能调试前先将测试数据库备份,然后功能调试之后再将测试数据库还原,这样就可以重复的进⾏功能调试。

数据库备份过程⽐较顺利,但是还原过程中出现错误,⽆论是还原数据库还是还原数据库⽂件都报错: 还原数据库时报下⾯错误: 还原数据库⽂件时报下⾯错误: 通过百度资料,最终解决了还原数据库出错的问题,现将数据库备份和还原的步骤列在下⾯,以备后⽤。

SqlServer数据库备份步骤 1)⾸先在本地磁盘上建⼀个备份⽂件夹,如果不想单独建个⽂件夹的话,使⽤SqlServer默认的备份⽂件夹也可以。

本例中在本地K盘建⽴⼀个数据库备份⽂件夹。

2)打开SqlServer客户端,在需要备份的数据库上点右键,选择任务->备份,弹出备份数据库窗⼝。

3)在备份数据库窗⼝下⽅删除默认的备份⽂件,然后点击添加按钮,选择步骤1中建⽴的⽂件夹作为备份⽂件夹,接着给⼀个备份⽂件的名称。

点击确定按钮返回备份数据库窗⼝。

在备份⽂件了。

SqlServer数据库还原步骤 1)如果数据库是多个客户端在连接,在还原之前,⾸先要把数据库的连接⽅式设置为单⼀连接。

打开SqlServer客户端,在需要还原的数据库上点右键,选择属性,弹出数据库属性窗⼝。

2)在数据库属性窗⼝右侧的其它选项中,在状态分组中将限制访问属性的值从MULTI_USER变成SINGLE_USER,然后点击确定按钮返回。

3)在需要还原的数据库上点右键,选择任务->还原->⽂件和⽂件组,弹出还原⽂件和⽂件组窗⼝。

JAVA实现数据库备份与还原

JAVA实现数据库备份与还原

JAVA实现数据库备份与还原[MYSQL为例]数据库数据的备份与还原最好是使用数据库自带的客户端软件来实现,JAVA可以通过调用mysqldump、mysql客户端软件分别进行mysql数据库的备份还原,当然前提是JAVA服务器必须安装mysql客户端软件,但是也可以通过java telnet登陆数据库服务器实现备份,关于telnet的相关资料请Google.MYSQL支持的备份方式:1.使用SELECT INTO ...OUTFILE,例如SQL代码1SELECT * INTO OUTFILE "D:\\test.sql" fields terminatedby ',' lines terminatedby '' from category ;生成的文件会存放在数据库服务器上面SELECT INTO只备份了数据库表中的数据:如下为category备份后的文件内容XML/HTML代码21,ELECTRONICS,\N32,TELEVISIONS,143,TUBE,254,LCD,265,PLASMA,276,PORTABLE ELECTRONICS,187,MP3 PLAYERS,698,FLASH,7109,CD PLAYERS,61110,2 WAY RADIOS,62.使用BACKUP TABLE,例如SQL代码12BACKUPTABLE test_tableto 'D:\backup';BACKUP只针对MyISAM表格,且在MYSQL 5.1的参考手册中“注释:本语句不理想”; BACKUP语句效果为拷贝数据库表中的.frm文件到数据库服务器目标目录3.使用mysqldump程序或mysqlhotcopy脚本MYSQL 5.1的参考手册中关于mysqldump的说明:“可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器(不一定是一个MySQL服务器)。

SQLServer数据库备份和恢复

SQLServer数据库备份和恢复

SQLServer数据库备份和恢复作为一位数据库管理员,备份和恢复数据库是日常工作中必不可少的任务。

在SQLServer中,备份和恢复数据库是非常简单而且快速的,但是在备份和恢复过程中需要注意一些要点,本文将对此进行介绍和分析。

一、备份数据库在备份数据库之前,需要了解备份的种类和使用场景。

常见的备份种类有完整备份、差异备份和日志备份。

完整备份是将数据库的所有数据和日志都备份下来,差异备份是在完整备份的基础上备份自上次完整备份之后发生的所有变化,而日志备份是备份从最后一次备份到本次备份之间发生的所有交易记录。

是否进行完整备份,差异备份还是日志备份,取决于数据需要恢复到哪一个时间点以及备份的频率和容量。

完整备份备份的数据和所有交易记录,可以恢复到任意一个时间点;差异备份备份的数据是上次备份之后的所有变化,可以恢复到差异备份之后的任意一个时间点;而日志备份只备份从上次备份到本次备份之间的交易记录,只能在连续的日志备份中进行数据的恢复。

在进行备份之前,需要关闭数据库以保证备份的一致性。

可以使用以下SQL语句进行完整备份:BACKUP DATABASE database_nameTO DISK = 'backup_path\backup_file_name.bak'WITH FORMAT, INIT其中,database_name 是要备份的数据库名称,backup_path 是备份文件的存储路径,backup_file_name 是备份文件的名称。

WITH FORMAT参数表示每次备份都会覆盖之前的备份文件并且重新初始化备份集,INIT参数表示让备份文件从头开始,不保存之前的任何备份数据。

需要进行差异备份时,可以使用以下SQL语句:BACKUP DATABASE database_nameTO DISK = 'backup_path\backup_file_name.diff'WITH DIFFERENTIAL其中,DIFFERENTIAL参数表示进行差异备份。

SQL Server数据库的备份与还原以及在项目中是怎样去实现的

SQL Server数据库的备份与还原以及在项目中是怎样去实现的

SQL Server数据库的备份与复原以及在工程中是怎样去实现的2021-03-13 11:39:21标签:SQL Server数据库的备份与复原--备份的设备有2种(临时设备和永久设备) 注意:默认下的备份类型是完整备份--第一种:backup database Company to disk='d:\backup\1.bak'--临时设备/*如果这里不指定明确路径的话〔如:backup database company to disk='backup\1.bak'〕,那么备份的数据库将会自动备份到系统指定的目录下:C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup*/--第二种:/*第一步首先成立永久备份设备〔系统自带的存储过程〕在master 数据库中就会找到如图1:*/--执行语句如:exec sp_addumpdevice 'disk','disk_company','D:\2.bak'--永久设备--执行成果就会呈现如图2:--多了一个备份设备:disk_company--第二步:backup database company to disk_company with noinit --默认暗示追加(不覆盖) --好了备份完成!--此刻我来复原数据库(我用的是第一种方法备份的,所以我要第一种方法来复原) ,--本来的数据如图3:--颠末我手动删除几个表后的数据库如图4:--执行语句:restore database Company from disk='d:\backup\1.bak' --注意备份到哪里去就要从复原哪里来--执行后会呈现什么呢?请看错误动静:/*动静 3159,级别 16,状态 1,第 1 行尚未备份数据库 "company" 的日志尾部。

SQLServer数据库备份和还原

SQLServer数据库备份和还原

SQLServer数据库备份和还原⼀、SQL命令备份BACKUP DATABASE TestDb TO DISK='d:\TestDb.bak'还原RESTORE DATABASE TestDb FROM DISK='d:\TestDb.bak'⼆、使⽤管理⼯具三、使⽤sqlcmd备份sqlcmd -S . -E -Q "BACKUP DATABASE AbpFirst TO DISK='d:\AbpFirst.bak'"还原sqlcmd -S . -E -Q "RESTORE DATABASE AbpFirst FROM DISK='d:\AbpFirst.bak'"四、常见问题1.还原失败原因:Sql server还原失败,提⽰:数据库正在使⽤,⽆法获得对数据库的独占访问权解决⽅案1.如果你使⽤管理⼯具还原数据库并且在Microsoft SQL Server Management Studio 2016或以上版本的话,可以在还原的时候勾选"关闭到⽬标数据库的现有链接"解决⽅案2:如果你的SqlServer Management Studio的版本⽐较低,可以设置数据库为单⽤户模式,执⾏完还原操作后,恢复为多⽤户模式设置⽅式:选中要还原的数据库-->属性-->选项-->限制访问该值从MULTI_USER修改为SINGLE_USER,此时该数据库就会显⽰为单⽤户模式这是GUI的模式,语句的办法⽐较简单---设置数据库为单⽤户模式USE MASTERGOALTER DATABASE eol_tcgroup SET SINGLE_USER WITH ROLLBACK IMMEDIATE;GO---设置数据库为多⽤户模式USE MASTERGOALTER DATABASE eol_tcgroup SET MULTI_USER WITH ROLLBACK IMMEDIATE;GO解决⽅案3:完全使⽤T-Sql的⽅式,执⾏备份数据库操作use mastergo---声明变量declare@dbName nvarchar(max)='Mvc_HNHZ';declare@dbFullName nvarchar(max)='E:\NewWork\Web\backup\test1.bak';--1.1修改为单⽤模式exec(N'ALTER DATABASE '+@dbName+' SET SINGLE_USER WITH ROLLBACK IMMEDIATE');--1.2结束链接进程DECLARE@kid varchar(max)SET@kid=''SELECT@kid=@kid+'KILL '+CAST(spid as Varchar(10)) FROM master..sysprocesses WHERE dbid=DB_ID(@dbName) ;EXEC(@kid) ;--2.执⾏还原语句restore database@dbName from disk=@dbFullNamewith replace--覆盖现有的数据库--3.重置数据库为多⽤户模式exec(N'ALTER DATABASE '+@dbName+' SET MULTI_USER WITH ROLLBACK IMMEDIATE');2.强制断开数据库已有连接USE masterGOALTER DATABASE[DBName]SET SINGLE_USER WITH ROLLBACK IMMEDIATEGO--查看是否还有⽤户连接SELECT*FROM sys.[sysprocesses]WHERE DB_NAME([dbid])='DBName'GOALTER DATABASE[DBName]SET MULTI_USERGO其他相关⽂章:。

sql数据库备份与还原方法

sql数据库备份与还原方法

sql数据库备份与还原方法嘿,朋友们!今天咱就来唠唠 SQL 数据库备份与还原方法这档子事儿。

你想想看啊,数据库就好比是一个装满了宝贝的大箱子,里面啥重要东西都有。

那要是这个箱子一不小心出点啥问题,咱不得心疼死啊!所以备份就显得超级重要啦。

备份数据库呢,就像是给这个大箱子拍个快照,把它当时的样子原原本本给记录下来。

这方法有好几种呢,比如可以完整备份,就像给整个箱子来个全方位拍照,一点细节都不放过。

还有差异备份,就好比是只拍箱子里新添进去或者有变化的部分。

咱就拿完整备份来说吧,就跟你出门旅行前把所有要带的东西都整理好装进行李箱一样,仔仔细细,不落下任何一样重要的。

这样等需要的时候,就能直接拿出来用啦。

那还原呢,就是当箱子出问题了,咱把之前拍的快照拿出来,让箱子恢复到原来的模样。

这可真是个神奇的过程啊!就好像时光倒流一样,把数据库一下子变回之前健康的状态。

比如说,某天你不小心误删了一些重要的数据,哎呀呀,那可咋办呀?这时候还原就派上大用场啦!就跟你不小心把心爱的玩具弄丢了,突然又找回来了一样开心。

备份和还原的过程中,也有一些要注意的地方哦。

就像你给箱子拍照的时候,得找个好角度,把所有东西都拍清楚,可不能马虎。

还原的时候也要小心操作,别一不小心把不该还原的给弄出来了。

而且啊,备份可不是一锤子买卖,得定期去做。

这就好比你每天都要吃饭一样,不能说今天吃了明天就不吃了呀。

你得养成习惯,定期给数据库来个备份,这样才能保证它的安全。

还有哦,备份的文件也要好好保存,可别乱丢乱放。

这就像你把珍贵的照片放在一个安全的地方,而不是随便扔在桌子上。

不然到时候要用的时候找不到,那不就傻眼啦。

总之呢,SQL 数据库备份与还原方法就像是给我们的数据上了一道保险,让我们心里踏实。

咱可得好好掌握这个技能,保护好我们的数据这个大宝贝呀!这可不是开玩笑的事儿,大家都得重视起来呀!不然等出了问题再后悔可就来不及啦!。

SQL Server中的备份与还原操作详解

SQL Server中的备份与还原操作详解

SQL Server中的备份与还原操作详解SQL Server是一种功能强大的关系数据库管理系统,可以帮助企业进行数据管理和存储。

而对于企业来说,数据的安全性和完整性非常重要。

因此,备份和还原是SQL Server的核心功能之一。

本文将详细介绍SQL Server中的备份与还原操作,包括备份和还原的各种选项、备份和还原的流程和步骤、备份和还原的常见问题及其解决方法等等。

希望本文能够帮助读者更好地了解备份与还原操作,并加强对数据安全性和完整性的保护。

一、备份选项在进行备份操作之前,需要先选择备份选项。

在SQL Server中,备份选项主要有完全备份、日志备份、增量备份、差异备份、复制文件(文件和文件组备份)、虚拟设备备份等。

不同的备份选项适用于不同的备份需求。

完全备份:完全备份是备份一个数据库中的所有数据和数据库对象。

它包括主数据文件、其他数据文件和日志文件。

这意味着完全备份可以还原整个数据库,并恢复到备份时的状态。

日志备份:日志备份是备份在上一次完全备份或日志备份之后对数据库所做的所有更改。

这对于追踪数据库的变化非常有用,比如数据库恢复到某个特定的时间点。

增量备份:增量备份是备份自上一次备份以来发生的更改。

它只备份上次完全备份或增量备份之后做出的更改。

可以在每次备份后累计增量备份,这样可以减少恢复时所需的时间和存储空间。

差异备份:差异备份是备份从上一次完全备份以来对数据库所做的所有更改。

与增量备份不同的是,差异备份只包含自上一次差异备份后更改的数据。

复制文件(文件和文件组备份):这是备份数据库的一部分。

你可以选择备份数据库的文件或文件组,如只备份数据库的主数据文件或事务日志文件。

虚拟设备备份:虚拟设备备份是在设备上虚拟创建一个备份设备。

这使得可以同时将备份发送到多个设备,即使它们不是直接连接到数据库的设备。

虚拟设备备份旨在简化备份和还原过程。

二、备份流程和步骤备份操作需要遵循一定的步骤和流程。

下面是备份操作的基本流程和步骤:1. 选择备份选项:选择适当的备份选项,如完全备份、日志备份、增量备份、差异备份等。

java实现mysql数据库的备份及还原

java实现mysql数据库的备份及还原

java实现mysql数据库的备份及还原备份:public static void backup() {try {Runtime rt = Runtime.getRuntime();// 调⽤调⽤mysql的安装⽬录的命令Process child = rt.exec("e:\\MySQL\\bin\\mysqldump -h localhost -uroot -p123 db_name");// 设置导出编码为utf-8。

这⾥必须是utf-8// 把进程执⾏中的控制台输出信息写⼊.sql⽂件,即⽣成了备份⽂件。

注:如果不对控制台信息进⾏读出,则会导致进程堵塞⽆法运⾏ InputStream in = child.getInputStream();// 控制台的输出信息作为输⼊流InputStreamReader xx = new InputStreamReader(in, "utf-8");// 设置输出流编码为utf-8。

这⾥必须是utf-8,否则从流中读⼊的是乱码String inStr;StringBuffer sb = new StringBuffer("");String outStr;// 组合控制台输出信息字符串BufferedReader br = new BufferedReader(xx);while ((inStr = br.readLine()) != null) {sb.append(inStr + "\r\n");}outStr = sb.toString();// 要⽤来做导⼊⽤的sql⽬标⽂件:FileOutputStream fout = new FileOutputStream("c:\\test.sql");OutputStreamWriter writer = new OutputStreamWriter(fout, "utf-8");writer.write(outStr);writer.flush();in.close();xx.close();br.close();writer.close();fout.close();System.out.println("");} catch (Exception e) {e.printStackTrace();}}还原:public static void restore(String databaseName) {try {Runtime runtime = Runtime.getRuntime();Process process = runtime.exec("e:\\MySQL\\bin\\mysql.exe -hlocalhost -uroot -p123 --default-character-set=utf8 "+ databaseName);OutputStream outputStream = process.getOutputStream();BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\test.sql"), "utf-8"));String str = null;StringBuffer sb = new StringBuffer();while ((str = br.readLine()) != null) {sb.append(str + "\r\n");}str = sb.toString();// System.out.println(str);OutputStreamWriter writer = new OutputStreamWriter(outputStream,"utf-8");writer.write(str);writer.flush();outputStream.close();br.close();writer.close();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}。

sqlserver 备份还原流程

sqlserver 备份还原流程

SQL Server备份和还原的流程如下:
备份:
1. 打开SQL Server,依次展开sqlserver根目录,并打开数据库。

2. 选择要备份的数据库名,鼠标右键任务->选择备份。

3. 点击添加,选择存放数据库备份文件的地址。

4. 在弹出对话框中,点击图示按钮,选择存放数据库备份文件的地址,文件名后缀名为.bak 点击确定。

5. 点击选项,根据自己的需求进行备份设置,设置完成,点击确定,开始备份。

还原:
1. 选择要还原的数据库名,鼠标右键任务->选择还原->选择数据库。

2. 在弹出对话框中,选择源设备,点击后面的按钮,弹出指定备份对话框,点击添加按钮,选择.bak源文件,找到后,点击确定。

3. 选择选项,进行还原设置,勾选“覆盖现有数据”前面的小方框;点击“还原为”后面的按钮,要还原该数据库的数据文件和日志文件。

4. 选定好要还原的数据文件和日志文件之后,点击“确定”按钮,完成数据库还原。

SQLServer数据库的备份与还原以及在项目中是怎样去实现的

SQLServer数据库的备份与还原以及在项目中是怎样去实现的

SQL Server数据库的备份与还原以及在项目中是怎样去实现的2012-03-13 11:39:21标签:--备份的设备有2种(临时设备和永久设备) 注意:默认下的备份类型是完整备份? --第一种:backup database Company to disk='d:\backup\1.bak'--临时设备/*如果这里不指定明确路径的话(如:backup database company todisk='backup\1.bak'),那么备份的数据库将会自动备份到系统指定的目录下:C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup*/--第二种:/*第一步首先建立永久备份设备(系统自带的存储过程)在master 数据库中就会找到如图1:?*/--执行语句如:exec sp_addumpdevice 'disk','disk_company','D:\2.bak'--永久设备--执行结果就会出现如图2:--多了一个备份设备:disk_company--第二步:backup database company to disk_company with noinit --默认表示追加(不覆盖)--好了备份完成!?--现在我来还原数据库(我用的是第一种方法备份的,所以我要第一种方法来还原) ,--原来的数据如图3:--经过我手动删除几个表后的数据库如图4:--执行语句:restore database Company from disk='d:\backup\1.bak' --注意备份到哪里去就要从还原哪里来--执行后会出现什么呢?请看错误消息:/*消息 3159,级别 16,状态 1,第 1 行尚未备份数据库 "company" 的日志尾部。

SQLServer数据库的备份和还原详解

SQLServer数据库的备份和还原详解

SQLServer数据库的备份和还原详解1. 基本概念:mdf文件:SqlServer数据库的主数据文件ldf文件:SqlServer数据库的日志文件SQL Server管理的每个数据库都对应一个mdf文件和一个ldf文件。

当SQL Server服务处于开启时,这些文件是无法删除的。

用SQL Server 企业管理器,单击某个数据库,选择右键菜单中的“属性",从弹出对话框的“数据文件”和“事务日志”标签页中可以查看这个数据库对应的mdf文件路径和ldf文件路径。

2. 用SQL Server 企业管理器备份和还原数据库:例如,备份数据库到可移动存储介质,然后还原到另一台机器上,步骤如下:备份:单击要备份的数据库,从右键菜单选择“所有任务->备份数据库”。

选择“完全备份”,删除“备份到”列表框中的现有内容,然后“添加”;弹出“选择备份目的”对话框,“文件名”就是你要得到的备份文件的存放路径。

选好后确定,这时“备份到”列表框中出现你选择的目的文件路径。

因为没有重名文件,“追加”或“重写”选项的效果是一样的,不用管。

选中它,确定,等待备份完成。

完成后在你指定的路径下将看到你备份的文件,注意该文件默认没有后缀名。

备份文件还有很大的压缩空间,一般一个40多M的备份文件用winRAR压缩后只有4M左右,作为邮箱附件也没有问题。

还原:将备份文件放到一个便于管理的文件夹下,例如你的数据库叫“test”,可以建立一个叫“e:\db_bak\test\”的文件夹。

从SQL Server 企业管理器单击“数据库”,选择“新建数据库...”,起名“test”,确定。

看到该数据库出现在数据库列表中,里面只有一些系统tables。

注意新建数据库默认的mdf文件和ldf文件都会被放在SQL Server安装目录下的子目录“MSSQL\data\”中,文件名与数据库名称相同。

单击该数据库,从右键列表中选择“所有任务->还原数据库”。

Java程序中实现MySQL数据库的备份与还原

Java程序中实现MySQL数据库的备份与还原

Java程序中实现MySQL数据库的备份与还原案例代码:数据库备份1 //mysqldump -h端⼝号 -u⽤户 -p密码数据库 > d:/test.sql --备份D盘2 //备份3 public static void dataBaseDump(String port,String username,String password,String databasename,String sqlname) throws Exception {4 File file = new File("F:\\test");5 if ( !file.exists() ){6 file.mkdir();7 }8 File datafile = new File(file+File.separator+sqlname+".sql");9 if( datafile.exists() ){10 System.out.println(sqlname+"⽂件名已存在,请更换");11 return ;12 }13 //拼接cmd命令14 Process exec = Runtime.getRuntime().exec("cmd /c mysqldump -h"+port+" -u "+username+" -p"+password+" "+databasename+" > "+datafile);15 if( exec.waitFor() == 0){16 System.out.println("数据库备份成功,备份路径为:"+datafile);17 }18 }数据库还原//还原//mysql -h端⼝号 -u⽤户 -p密码数据库 < d:/test.sql 恢复到数据库中public static void backup(String port,String username,String password,String databasename,String sqlname) throws Exception {File datafile = new File("F:\\test\\"+sqlname+".sql");if( !datafile.exists() ){System.out.println(sqlname+"⽂件不已存在,请检查");return ;}//拼接cmd命令Process exec = Runtime.getRuntime().exec("cmd /c mysql -h"+port+" -u "+username+" -p"+password+" "+databasename+" < "+datafile);if( exec.waitFor() == 0){System.out.println("数据库还原成功,还原的⽂件为:"+datafile);}}。

黑马程序员java面试题之sqlserver数据库的备份和恢复

黑马程序员java面试题之sqlserver数据库的备份和恢复

一、备份数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server2、SQL Server组-->双击打开你的服务器-->双击打开数据库目录3、选择你的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择备份数据库4、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份二、还原数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server2、SQL Server组-->双击打开你的服务器-->点图标栏的新建数据库图标,新建数据库的名字自行取3、点击新建好的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择恢复数据库4、在弹出来的窗口中的还原选项中选择从设备-->点选择设备-->点添加-->然后选择你的备份文件名-->添加后点确定返回,这时候设备栏应该出现您刚才选择的数据库备份文件名,备份号默认为1(如果您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中选择最新的一次备份后点确定)-->然后点击上方常规旁边的选项按钮5、在出现的窗口中选择在现有数据库上强制还原,以及在恢复完成状态中选择使数据库可以继续运行但无法还原其它事务日志的选项。

在窗口的中间部位的将数据库文件还原为这里要按照你SQL的安装进行设置(也可以指定自己的目录),逻辑文件名不需要改动,移至物理文件名要根据你所恢复的机器情况做改动,如您的SQL 数据库装在D:\Program Files\Microsoft SQL Server\MSSQL\Data,那么就按照您恢复机器的目录进行相关改动改动,并且最后的文件名最好改成您当前的数据库名(如原来是bbs_data.mdf,现在的数据库是forum,就改成forum_data.mdf),日志和数据文件都要按照这样的方式做相关的改动(日志的文件名是*_log.ldf结尾的),这里的恢复目录您可以自由设置,前提是该目录必须存在(如您可以指定d:\sqldata\bbs_data.mdf或者d:\sqldata\bbs_log.ldf),否则恢复将报错6、修改完成后,点击下面的确定进行恢复,这时会出现一个进度条,提示恢复的进度,恢复完成后系统会自动提示成功,如中间提示报错,请记录下相关的错误内容并询问对SQL操作比较熟悉的人员,一般的错误无非是目录错误或者文件名重复或者文件名错误或者空间不够或者数据库正在使用中的错误,数据库正在使用的错误您可以尝试关闭所有关于SQL窗口然后重新打开进行恢复操作,如果还提示正在使用的错误可以将SQL服务停止然后重起看看,至于上述其它的错误一般都能按照错误内容做相应改动后即可恢复三、收缩数据库一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据四、设定每日自动备份数据库强烈建议有条件的用户进行此操作!1、打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQLServer组-->双击打开你的服务器2、然后点上面菜单中的工具-->选择数据库维护计划器3、下一步选择要进行自动备份的数据-->下一步更新数据优化信息,这里一般不用做选择-->下一步检查数据完整性,也一般不选择4、下一步指定数据库维护计划,默认的是1周备份一次,点击更改选择每天备份后点确定5、下一步指定备份的磁盘目录,选择指定目录,如您可以在D盘新建一个目录如:d:\databak,然后在这里选择使用此目录,如果您的数据库比较多最好选择为每个数据库建立子目录,然后选择删除早于多少天前的备份,一般设定4-7天,这看您的具体备份要求,备份文件扩展名一般都是bak就用默认的6、下一步指定事务日志备份计划,看您的需要做选择-->下一步要生成的报表,一般不做选择-->下一步维护计划历史记录,最好用默认的选项-->下一步完成7、完成后系统很可能会提示Sql Server Agent服务未启动,先点确定完成计划设定,然后找到桌面最右边状态栏中的SQL绿色图标,双击点开,在服务中选择Sql Server Agent,然后点击运行箭头,选上下方的当启动OS时自动启动服务8、这个时候数据库计划已经成功的运行了,他将按照您上面的设置进行自动备份修改计划:1、打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->管理-->数据库维护计划-->打开后可看到你设定的计划,可以进行修改或者删除操作五、数据的转移(新建数据库或转移服务器)一般情况下,最好使用备份和还原操作来进行转移数据,在特殊情况下,可以用导入导出的方式进行转移,这里介绍的就是导入导出方式,导入导出方式转移数据一个作用就是可以在收缩数据库无效的情况下用来减小(收缩)数据库的大小,本操作默认为您对SQL的操作有一定的了解,如果对其中的部分操作不理解,可以咨询动网相关人员或者查询网上资料1、将原数据库的所有表、存储过程导出成一个SQL文件,导出的时候注意在选项中选择编写索引脚本和编写主键、外键、默认值和检查约束脚本选项2、新建数据库,对新建数据库执行第一步中所建立的SQL文件3、用SQL的导入导出方式,对新数据库导入原数据库中的所有表内容。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 Server
public ActionForward doSqlServerBackUp(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception { String mssqlBackupName= request.getParameter("mssqlBackupName");//自定义备份数据库名 String mssqlBackupPath=
request.getParameter("mssqlRecoveryPath"); // 被还原数据库文件的路径 String dbname="datatest";//数据库名称 try{ File file = new File(mssqlRecoveryPath); String path = file.getPath();//数据库文件名 String recoverySql = "ALTER DATABASE "
* @ClassName: DataBaseUtil * @Description: TODO * @author 莫希柏 * @date Jul 4, 2012 2:21:41 PM */ public class DataBaseUtil { /** * @Description: 获取数据库连接 * @author 莫希柏 * @date Jul 4, 2012 2:23:11 PM */ public static Connection getConnection() { Connection conn = null; try {
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;
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 "
} catch (ClassNotFoundException e) { e.printStackTrace();
} catch (SQLException e) { e.printStackTrace();
} return conn; }
/** * @Description: 关闭 * @author 莫希柏 * @date Jul 4, 2012 2:22:57 PM
alert('SQLSERVER 备 份 失 败 ! ');document.location.href='DataAction.d o?action=toBackIndex';</script>"); } } catch (IOException e) {
e.printStackTrace(); } return null; } /** * @Description: SqlServer还原 * @author 莫希柏 * @date Jul 4, 2012 4:28:05 PM */
public ActionForward doMySqlBackUp (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){
boolean flag=false; try {
+dbname+" SET ONLINE WITH ROLLBACK 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\">
Java 实现 Sqlserver 及 MySql 的备份与还原
注:本人是采用 Struts1 做的一个简单小例子。 实现步骤: 1.数据库基类 package com.wingo.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /**
alert('SQLSERVER 备 份 失 败 ! ');document.location.href='DataActi on.do?action=toBackIndex';</script> "); } } catch (IOException e) { e.printStackTrace(); } return null; } /** * @Description: MySql备份 * @author 莫希柏 * @date Jul 4, 2012 4:39:02 PM */
+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.d o?action=toBackIndex';</script>"); }else{ response.getWriter().print( "<script type=\"text/javascript\">
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);
相关文档
最新文档