public static string restoredatabase(string backfile)
{
///殺死原來所有的數據庫連接進程
///
sqlconnection conn=new sqlconnection ();
conn.connectionstring ="data source=.;initial catalog=master;user id=sa;pwd =teny123";
conn.open ();
string sql="select spid from sysprocesses ,sysdatabases where sysprocesses.dbid=sysdatabases.dbid and sysdatabases.name='pubs'";
sqlcommand cmd1 = new sqlcommand(sql, conn);
sqldatareader dr;
arraylist list = new arraylist();
try
{
dr = cmd1.executereader();
while(dr.read())
{
list.add(dr.getint16(0));
}
dr.close();
}
catch(sqlexception eee)
{
messagebox.show (eee.tostring ());
}
finally
{
conn.close ();
}
messagebox.show (list.count .tostring ());
for(int i = 0; i < list.count; i++)
{
cmd1 = new sqlcommand(string.format("kill {0}", list[i].tostring ()), conn);
cmd1.executenonquery();
messagebox.show ("you have killed thread "+list[i].tostring ());
}
//這里一定要是master數據庫,而不能是要還原的數據庫,因為這樣便變成了有其它進程
//占用了數據庫。
string constr = @"data source=.;initial catalog=master;user id=sa;pwd =teny123 ";
string database = "pubs";
string path = @"d:/1.mdf";
//string backup = string.format("backup database {0} to disk='{1}'", database, path);
string backup = string.format("restore database {0} from disk = '{1}'", database, path);
sqlconnection con = new sqlconnection(constr);
sqlcommand cmd = new sqlcommand(backup, con);
con.open();
try
{
cmd.executenonquery();
messagebox.show("還原成功");
}
catch(sqlexception ee)
{
//throw(ee);
//messagebox.show("還原失敗");
messagebox.show (ee.tostring ());
}
finally
{
con.close();
}
return "成功與否字符串";
//return "restore successfully!";
}
新聞熱點
疑難解答