java调用t-sql进行数据库的备份和还原...
时间:2010-08-18 来源:Li_ZiYue
前段时间做了个项目,需要用到Sql Server2000数据库,使用了T-SQL来实现数据库的备份和恢复,总结一下:
java调用T-SQL备份数据库:
备份数据库很简单,主要使用了改语句 String sql = "backup database " + dbName + " to disk = '" + bakupname + "'";
由于数据库操作要求安全性,所以该语句放在了hibernate的回调函数里,具体代码参考如下:
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
conn = session.connection();
stmt = conn.createStatement();
this.backupDb(path, bakupname, fileName);
return null;
}
private void backupDb(String path, String bakupname,
String fileName) {
try {
String sql = "backup database " + dbName
+ " to disk = '" + bakupname + "'";
stmt.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}
}
java调用T-SQL还原数据库:
在进行数据库还原时遇到了点小问题,使用了改语句进行还原 String sql = "restore database "
+ dbName + " from disk = '" + reName + "'"
+ " WITH FILE = 1, NOUNLOAD , STATS = 10, RECOVERY , REPLACE";
当执行代码是发现出错了,仔细查了查,原来在进行数据库还原时需要设置为单用户模式,于是我修改了sql,
String sql = "use master;alter database " + dbName
+ " set single_user with rollback immediate;restore database "
+ dbName + " from disk = '" + reName + "'"
+ " WITH FILE = 1, NOUNLOAD , STATS = 10, RECOVERY , REPLACE";
运行代码,成功了,但当我再次访问jsp界面是,有出现了错误,错误显示由于使用了单用户模式,不能访问数据库,
于是我想,还原成功后,将权限修改过来不久行了,于是我添加了一条sql,在还原成功后,执行该sql:
String sql2 = "use master;alter database " + dbName + " set multi_user";
好了,这次能够访问了,不知道这样的安全性如何,期待高手指点!