环境及情况说明
环境:sqlserver2008,Struts1.2和Hibernate;
1、使用Hibernate获得数据库的连接,在hibernate中 使用的都是Transaction事务管理器,这个是一个事务,在其中调用备份数据库语句的时候会出现异常
不能在事务内部执行备份或还原操作
的警告;
解决方法:使用下列语句获得连接,
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
if (conn==null||conn.isClosed()) {
conn =DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=DMS","r00t","000");
}
2、现在可以对数据库进行备份操作,但是不能进行恢复操作,因为恢复需要独占数据库使用权,
解决方法:使用下列sql语句,创建PreparedStatement
String sql = "Alter DataBase DMS SET OFFLINE WITH ROLLBACK IMMEDIATE " + //断开数据库的所有连接
"use master restore database ? from disk=? with replace " + //恢复数据库
"Alter DataBase DMS SET ONLINE WITH ROLLBACK IMMEDIATE"; //恢复数据库的所有连接
现在既可以备份数据库,又可以恢复数据库啦~~~