Java实现SQLServer的数据库备份与还原
2012-07-03 21:33
513 查看
import java.io.*;
import java.text.SimpleDateFormat;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
//---------------------------------
// java mssql数据库的备份与还原
//---------------------------------
public class SqlBak extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet
{
static final long serialVersionUID = 1L;
public SqlBak() {super();}
//----------------------------------
// POST请求
//----------------------------------
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGet(request,response);
}
//----------------------------------
// Get请求
//----------------------------------
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
Connection conn = null;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
String url="jdbc:sqlserver://localhost:1433;databaseName=db_test;user=sa;password=123";
conn= DriverManager.getConnection(url);
//----------------------
// 数据库备份
// 参数:
// 存盘路径
// 要备份的数据库名称
// 数据库连接对象
// 返回结果:备份名称
//----------------------
//String bkname = bkData("C:\\", "db_test", conn);
//response.getWriter().print("back name:"+bkname);//输出备份的名称
//----------------------
// 数据库还原
// 参数:
// 备份文件存盘路径
// 备份文件名称
// 要还原的数据库名称
// 数据库连接对象
// 返回结果:true | false
//----------------------
//boolean result = hfData("C:\\","20091118104911.bak","db_test",conn);
//response.getWriter().print("result:"+result);
}
//异常
catch(Exception e)
{
e.printStackTrace();
}
//释放连接
finally
{
try{conn.close();}catch(Exception e){}
}
}
//----------------------------------
// 数据库备份
// 参数:
// 存盘路径
// 要备份的数据库名称
// 数据库连接对象
//----------------------------------
public static String bkData(String path,String db_name,Connection conn)
{
String bk_name = ""; //要返回的备份名称
//盘名是否正确
if(path.lastIndexOf("\\") == -1) path += "\\";
//------------------------
// 与数据库进行操作
//------------------------
PreparedStatement stmt = null;
String sql = "";
try
{
String file = new SimpleDateFormat("yyyyMMddHHmmss").format(new java.util.Date())+".bak";
sql = "backup database "+db_name+" to disk='"+path+file+"' with format,name='full backup of "+db_name+"'";
stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
bk_name = file; //返回的文件名
}
//异常
catch(Exception e)
{
e.printStackTrace();
}
//状态集释放
finally
{
try{stmt.close();} catch(Exception e){}
}
//返回
return bk_name;
}
//----------------------------------
// 数据库恢复
// 参数:
// 备份文件存盘路径
// 备份文件名称
// 要还原的数据库名称
// 数据库连接对象
//----------------------------------
public static boolean hfData(String path,String bk_name,String db_name,Connection conn)
{
boolean result = false; //要返回的备份名称
//盘名是否正确
if(path.lastIndexOf("\\") == -1) path += "\\";
//------------------------
// 与数据库进行操作
//------------------------
PreparedStatement stmt = null;
String sql = "";
try
{
sql = "alter database "+db_name+" set offline with rollback immediate;";
sql += "restore database "+db_name+" from disk='" + path+bk_name + "'";
sql += "with replace "; //解决备尚未备份数据库 数据库 的日志尾部
sql += "alter database "+db_name+" set onLine with rollback immediate;";
stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
result = true;
}
//有异常
catch(Exception e)
{
e.printStackTrace();
}
//数据库操作释放
finally
{
try{stmt.close();} catch(Exception e){}
}
//返回
return result;
}
}
来自:http://www.chinasb.org/archives/2010/08/119.shtml
import java.text.SimpleDateFormat;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
//---------------------------------
// java mssql数据库的备份与还原
//---------------------------------
public class SqlBak extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet
{
static final long serialVersionUID = 1L;
public SqlBak() {super();}
//----------------------------------
// POST请求
//----------------------------------
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGet(request,response);
}
//----------------------------------
// Get请求
//----------------------------------
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
Connection conn = null;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
String url="jdbc:sqlserver://localhost:1433;databaseName=db_test;user=sa;password=123";
conn= DriverManager.getConnection(url);
//----------------------
// 数据库备份
// 参数:
// 存盘路径
// 要备份的数据库名称
// 数据库连接对象
// 返回结果:备份名称
//----------------------
//String bkname = bkData("C:\\", "db_test", conn);
//response.getWriter().print("back name:"+bkname);//输出备份的名称
//----------------------
// 数据库还原
// 参数:
// 备份文件存盘路径
// 备份文件名称
// 要还原的数据库名称
// 数据库连接对象
// 返回结果:true | false
//----------------------
//boolean result = hfData("C:\\","20091118104911.bak","db_test",conn);
//response.getWriter().print("result:"+result);
}
//异常
catch(Exception e)
{
e.printStackTrace();
}
//释放连接
finally
{
try{conn.close();}catch(Exception e){}
}
}
//----------------------------------
// 数据库备份
// 参数:
// 存盘路径
// 要备份的数据库名称
// 数据库连接对象
//----------------------------------
public static String bkData(String path,String db_name,Connection conn)
{
String bk_name = ""; //要返回的备份名称
//盘名是否正确
if(path.lastIndexOf("\\") == -1) path += "\\";
//------------------------
// 与数据库进行操作
//------------------------
PreparedStatement stmt = null;
String sql = "";
try
{
String file = new SimpleDateFormat("yyyyMMddHHmmss").format(new java.util.Date())+".bak";
sql = "backup database "+db_name+" to disk='"+path+file+"' with format,name='full backup of "+db_name+"'";
stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
bk_name = file; //返回的文件名
}
//异常
catch(Exception e)
{
e.printStackTrace();
}
//状态集释放
finally
{
try{stmt.close();} catch(Exception e){}
}
//返回
return bk_name;
}
//----------------------------------
// 数据库恢复
// 参数:
// 备份文件存盘路径
// 备份文件名称
// 要还原的数据库名称
// 数据库连接对象
//----------------------------------
public static boolean hfData(String path,String bk_name,String db_name,Connection conn)
{
boolean result = false; //要返回的备份名称
//盘名是否正确
if(path.lastIndexOf("\\") == -1) path += "\\";
//------------------------
// 与数据库进行操作
//------------------------
PreparedStatement stmt = null;
String sql = "";
try
{
sql = "alter database "+db_name+" set offline with rollback immediate;";
sql += "restore database "+db_name+" from disk='" + path+bk_name + "'";
sql += "with replace "; //解决备尚未备份数据库 数据库 的日志尾部
sql += "alter database "+db_name+" set onLine with rollback immediate;";
stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
result = true;
}
//有异常
catch(Exception e)
{
e.printStackTrace();
}
//数据库操作释放
finally
{
try{stmt.close();} catch(Exception e){}
}
//返回
return result;
}
}
来自:http://www.chinasb.org/archives/2010/08/119.shtml
相关文章推荐
- Java实现数据库的备份和还原简易教程(SQL Server,零基础学起)
- Java 实现 MySQL 数据库 备份与还原
- Java实现Sqlserver及MySql的备份与还原
- java调用mysql的工具类实现数据库远程备份,还原,生成创建表的sql脚本
- java+mysql开发的系统,在系统中数据库备份还原的思路与实现
- Java实现Sqlserver及MySql的备份与还原
- sqlserver 2005 数据库还原是出现“备份集中的数据库备份与现有的X数据库不同”的解决办法
- 利用T-SQL语句,实现数据库的备份与还原的功能
- java 实现mysql数据库备份与还原
- c# winform 实现对postgresql数据库的自动备份还原功能
- SQLSERVER使用密码加密备份文件以防止未经授权还原数据库
- T-SQL语句实现数据库备份与还原
- javaweb数据库备份与还原
- 通过T-SQL语句实现数据库备份与还原的代码
- java中数据库的备份与还原
- T-SQL语句实现数据库备份与还原
- 调用sql语句实现SqlServer的备份和还原,包括完整备份和差异备份
- java实现mysql数据库备份与还原
- Java数据库MySQL备份与还原
- SQLSERVER使用密码加密备份文件以防止未经授权还原数据库