第一种:SQLDMO
///
///还原方法
///
SQLDMO.Restore restore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer server = new SQLDMO.SQLServerClass();
//KILL DataBase Process
SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=;Trusted_Connection=False");
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='stockstar'", conn);
SqlDataReader dr;
dr = cmd.ExecuteReader();
ArrayList list = new ArrayList();
while(dr.Read())
{
list.Add(dr.GetInt16(0));
}
dr.Close();
for(int i = 0; i < list.Count; i++)
{
cmd = new SqlCommand(string.Format("KILL {0}", list[0].ToString()), conn);
cmd.ExecuteNonQuery();
}
conn.Close(); try
{
server.LoginSecure = false;
server.Connect(".", "sa", "");
restore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
restore.Database = "stockstar";
restore.Files = @"e:\nn.bak";
restore.FileNumber = 1;
restore.ReplaceDatabase = true;
restore.SQLRestore(server);
MessageBox.Show("Restore successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
server.DisConnect();
}
第二种:
///还原方法
///
public void RestoreDatabase(string backfile,DbParam dp)
{
SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=;Trusted_Connection=False");
conn.Open(); //KILL DataBase Process
SqlCommand cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='stockstar'", conn);
SqlDataReader dr;
dr = cmd.ExecuteReader();
ArrayList list = new ArrayList();
while(dr.Read())
{
list.Add(dr.GetInt16(0));
}
dr.Close();
for(int i = 0; i < list.Count; i++)
{
cmd = new SqlCommand(string.Format("KILL {0}", list[i].ToString()), conn);
cmd.ExecuteNonQuery();
} SqlCommand cmdRT = new SqlCommand();
cmdRT.CommandType = CommandType.Text;
cmdRT.Connection = conn;
cmdRT.CommandText = @"restore database stockstar from disk='e:\nn.bak'"; try
{
cmdRT.ExecuteNonQuery();
MessageBox.Show("Restore successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
我用sqlserver2000自带的还原就没有问题,可是用这两种方法数据都没有变化???怎么回事?请高手指教!!!!
///
///还原方法
///
SQLDMO.Restore restore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer server = new SQLDMO.SQLServerClass();
//KILL DataBase Process
SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=;Trusted_Connection=False");
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='stockstar'", conn);
SqlDataReader dr;
dr = cmd.ExecuteReader();
ArrayList list = new ArrayList();
while(dr.Read())
{
list.Add(dr.GetInt16(0));
}
dr.Close();
for(int i = 0; i < list.Count; i++)
{
cmd = new SqlCommand(string.Format("KILL {0}", list[0].ToString()), conn);
cmd.ExecuteNonQuery();
}
conn.Close(); try
{
server.LoginSecure = false;
server.Connect(".", "sa", "");
restore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
restore.Database = "stockstar";
restore.Files = @"e:\nn.bak";
restore.FileNumber = 1;
restore.ReplaceDatabase = true;
restore.SQLRestore(server);
MessageBox.Show("Restore successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
server.DisConnect();
}
第二种:
///还原方法
///
public void RestoreDatabase(string backfile,DbParam dp)
{
SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=;Trusted_Connection=False");
conn.Open(); //KILL DataBase Process
SqlCommand cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='stockstar'", conn);
SqlDataReader dr;
dr = cmd.ExecuteReader();
ArrayList list = new ArrayList();
while(dr.Read())
{
list.Add(dr.GetInt16(0));
}
dr.Close();
for(int i = 0; i < list.Count; i++)
{
cmd = new SqlCommand(string.Format("KILL {0}", list[i].ToString()), conn);
cmd.ExecuteNonQuery();
} SqlCommand cmdRT = new SqlCommand();
cmdRT.CommandType = CommandType.Text;
cmdRT.Connection = conn;
cmdRT.CommandText = @"restore database stockstar from disk='e:\nn.bak'"; try
{
cmdRT.ExecuteNonQuery();
MessageBox.Show("Restore successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
我用sqlserver2000自带的还原就没有问题,可是用这两种方法数据都没有变化???怎么回事?请高手指教!!!!
解决方案 »
- 水晶报表问题 记录集中有多条记录,页面上只显示了一条记录
- 谁给我推荐个IE内核的浏览器啊?
- 谁有海康威视封装好的cs
- 遇到问题需要关闭
- 超简单的小问题(好久没有编程了莫笑话)
- 我想用C#写一个截获封包的程序,比如截获所有流经某端口的封包
- 请用过<<ASP.NET Web 站点高级编程>>一书的源码的大侠进来看看!谢谢!
- 【散分调查】有多少人在用DevExpress V3的控件,盗版还是正版的,全套正版价格多少?
- 为什么我用LISTBOX控件,却没有SelectedItems属性呢?
- 高分请高手:如何动态的在图标(系统托盘图标)上绘制图形?
- 关于使用xml解决两个系统中数据交换的问题-高人指点啊!!
- 求助!不能打开数据库连接
http://blog.csdn.net/Eddie005/archive/2004/11/15/182060.aspx