///
///还原数据库///
/// 数据库名称
/// 还原的路径bak文件
/// 用户名
/// 密码
/// IP或者当前服务(.)
public static void Restoredb(string dataBaseName, string path, string userId, string passWord, stringdataSource)
{var strconn = "Data Source=" + dataSource + ";Initial Catalog=master;User ID=" + userId + ";pwd =" + passWord + "";
DataTable DBNameTable= newDataTable();
SqlDataAdapter Adapter= new SqlDataAdapter("select name from master..sysdatabases", strconn);lock(Adapter)
{
Adapter.Fill(DBNameTable);
}foreach (DataRow row inDBNameTable.Rows)
{if (row["name"].ToString() ==dataBaseName)
{throw new KnownException("已存在对应的数据,请勿重复还原数据库!");
}
}
//检测真正当前bak文件真正的log mdf的名字var strsql = "restore filelistonly from disk = '" + path + "'";
SqlDataAdapter Adapter2= newSqlDataAdapter(strsql, strconn);var dt = newDataTable();lock(Adapter2)
{
Adapter2.Fill(dt);
}var mdf = dt.Rows[0][0].ToString();var log = dt.Rows[1][0].ToString();string restore = string.Format(@"restore database {0} from disk = '{1}'
with REPLACE
, move '{2}' to 'D:\{3}.mdf'
,move '{4}' to 'D:\{5}.ldf'", dataBaseName, path, mdf, dataBaseName, log, dataBaseName);
SqlConnection conn= newSqlConnection(strconn);
SqlCommand cmd1= newSqlCommand(restore, conn);
conn.Open();//k
cmd1.ExecuteNonQuery();
conn.Close();//g
}///
///删除数据库///
///
///
///
///
///
///
public static void DeleteDataBase(string dataBaseName, string userId, string passWord, stringdataSource)
{var strconn = "Data Source=" + dataSource + ";Initial Catalog=master;User ID=" + userId + ";pwd =" + passWord + "";
SqlConnection conn= new SqlConnection(strconn);//创建一个数据库连接对象
conn.Open();var strsql = string.Format("drop database {0}", dataBaseName);
SqlCommand cmd= newSqlCommand(strsql, conn);
cmd.ExecuteNonQuery();try{
cmd.ExecuteNonQuery();
}catch(Exception ex)
{throw newKnownException(ex.Message);
}finally{
conn.Close();//g
}
}