JAVA实现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备份与恢复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数据库的备份和恢复方法作为一名数据库管理员,数据库的备份和恢复是非常重要的工作之一。
数据库是企业中最重要的信息资产之一,如果因为故障或其他原因导致数据丢失,会给企业带来不可估量的损失。
为了避免这种情况的发生,我们需要定期备份数据库,并且掌握好相应的恢复方法。
一、备份方法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的备份与还原注:本人是采用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数据库备份步骤 1)⾸先在本地磁盘上建⼀个备份⽂件夹,如果不想单独建个⽂件夹的话,使⽤SqlServer默认的备份⽂件夹也可以。
本例中在本地K盘建⽴⼀个数据库备份⽂件夹。
2)打开SqlServer客户端,在需要备份的数据库上点右键,选择任务->备份,弹出备份数据库窗⼝。
3)在备份数据库窗⼝下⽅删除默认的备份⽂件,然后点击添加按钮,选择步骤1中建⽴的⽂件夹作为备份⽂件夹,接着给⼀个备份⽂件的名称。
点击确定按钮返回备份数据库窗⼝。
在备份⽂件了。
SqlServer数据库还原步骤 1)如果数据库是多个客户端在连接,在还原之前,⾸先要把数据库的连接⽅式设置为单⼀连接。
打开SqlServer客户端,在需要还原的数据库上点右键,选择属性,弹出数据库属性窗⼝。
2)在数据库属性窗⼝右侧的其它选项中,在状态分组中将限制访问属性的值从MULTI_USER变成SINGLE_USER,然后点击确定按钮返回。
3)在需要还原的数据库上点右键,选择任务->还原->⽂件和⽂件组,弹出还原⽂件和⽂件组窗⼝。
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中,备份和恢复数据库是非常简单而且快速的,但是在备份和恢复过程中需要注意一些要点,本文将对此进行介绍和分析。
一、备份数据库在备份数据库之前,需要了解备份的种类和使用场景。
常见的备份种类有完整备份、差异备份和日志备份。
完整备份是将数据库的所有数据和日志都备份下来,差异备份是在完整备份的基础上备份自上次完整备份之后发生的所有变化,而日志备份是备份从最后一次备份到本次备份之间发生的所有交易记录。
是否进行完整备份,差异备份还是日志备份,取决于数据需要恢复到哪一个时间点以及备份的频率和容量。
完整备份备份的数据和所有交易记录,可以恢复到任意一个时间点;差异备份备份的数据是上次备份之后的所有变化,可以恢复到差异备份之后的任意一个时间点;而日志备份只备份从上次备份到本次备份之间的交易记录,只能在连续的日志备份中进行数据的恢复。
在进行备份之前,需要关闭数据库以保证备份的一致性。
可以使用以下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数据库的备份与复原以及在工程中是怎样去实现的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" 的日志尾部。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
=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);