Sqlserver 2005数据库还原问题(数据库和web服务器分开的两台)
                                   Sqlserver 2005数据库还原问题
功能模块:
      项目中有一个功能:新建项目。当用户点击新建时,实际上重新创建了一个新的 数据库。空库!然后再把项目里Item文件夹里的一个 Item.bak(在web服务器上)备份文件(空的表)还原到这个新建的库中。
我现在的部分代码如下:
ItemAction。Java
//建个项目库!  
			BaseDAO basedao = new BaseDAO();
			String database =basedao.createDatabase(String.valueOf(id));
             //新建库 格式为 SJCL+“项目ID)”   (String.valueOf(id)为项目ID
		/****************************************************************
  createDatabase(String str)方法
           新建数据库+项目编号&+Temb
	    public String createDatabase(String XMBH) {
		String sql = "create database SJCL" + XMBH;
		System.out.println("sql==新建数据库+项目编号&+Temb========" + sql);
		CreateConn conn = new CreateConn("master");
		conn.executeUpdate(sql);
		conn.close();
		return "SJCL" + XMBH;
	    }
******************************************************************/
String sPath=request.getRealPath("/");//得到路径
			//Path==C:\Tomcat 5.5\webapps\Test\
			String sFilePath=sPath+"Item";//得到备份文件路径
			String fn = "Item.bak";//备份文件名
			basedao.itemdb_restor_s(database1, sFilePath,fn);
             return itemlist(mapping,form,request,reponse);			
//itemdb_restor_s()方法如下:
/////////////////////////////////////////////////////////////////////
//basedao.itemdb_restor_s(database, sFilePath,fn);方法	
//新建项目库时还原Item文件夹下的空表备份
	public boolean itemdb_restor_s(String sDataBase, String sFilePath,String sFileName) {// 库名.备份文件地址
		CreateConn db_conn = new CreateConn("master");
		ResultSet rs = null;
		Process pr = null;//创建一个进程
		// 逻辑数据库信息
		String sDLogicalName = null;
		String sLLogicalName = null;
		// 物理地址
		String sDPath = null;
		String sLPath = null;	
		String sql = "";
		// String sDataBase="sjcl"+sItemBh;
		 String myIP=new BaseDAO().getMyIP().toString();
	        String myIPP[]=myIP.split("/");
	        myIP=myIPP[1];                      //自动获得web服务器Ip
		try {
			// 获取物理地址信息
			sql = "SELECT fileid,name,filename FROM " + sDataBase
					+ "..sysfiles ORDER BY fileid";
			System.out.println("sql=获取物理地址信息===" + sql);
			rs = db_conn.executeQuery(sql);
			while (rs.next()) {
				// String sss=rs.getString("name").trim();
				if (rs.getInt("fileid") == 1) {
					sDPath = rs.getString("filename").trim();// 地址一
				} else {
					if (rs.getInt("fileid") == 2) {
						sLPath = rs.getString("filename").trim();// 地址二
					}
				}
			}
			// 关闭数据库连接
			sql = "select spid from sysprocesses where dbid=db_id('"
					+ sDataBase + "')";
			System.out.println("sql====关闭数据库连接==" + sql);
			rs = db_conn.executeQuery(sql);
			while (rs.next()) {
				sql = "kill " + rs.getInt(1);
				db_conn.executeQuery(sql);
				System.out.println("sql====kill==" + sql);
			}
			pr = Runtime.getRuntime()
					.exec("net share SqlBak1=\""+sFilePath+"\""); // 创建本机进程,创建共享目录			
			System.out.println("net share SqlBak1=\""+sFilePath+"\"");
			sql = " exec master..xp_cmdshell 'net use \\\\"+myIP+"\\SqlBak1 !@#ibme54/user:Administrator' ";// 建立共享信用关系
			db_conn.executeQuery(sql);
			System.out.println("创建共享语句建新项目==" + sql);
			// 获取数据库恢复信息
			sql = "restore filelistonly from