日期:2014-05-18  浏览次数:20883 次

数据库还原问题
cmd.CommandText=@ "RESTORE       DATABASE       "+DBName+ "       from       disk= ' "+backupFile+ " ' ";    
    cmd.CommandType=CommandType.Text;    
    cmd.ExecuteNonQuery();    
    在查询分析器里能通过,为什么用cmd.ExecuteNonQuery();不行?

------解决方案--------------------
楼主至少应该给出一个错误提示
------解决方案--------------------
@ "RESTORE DATABASE "+DBName+ " from disk= ' "+backupFile+ " ' "
是否正确
------解决方案--------------------
在使用此代码还原数据库前 应该首先kill掉该数据库的其它使用dbid 例如:

conn是master系统数据库的连接
//获取所有用户进程
string strSQL = "select spid from master..sysprocesses where dbid=db_id( '数据库名 ') "
SqlDataAdapter Da=new SqlDataAdapter(strSQL, conn);

DataTable spidTable=new DataTable;
Da.Fill(spidTable);

SqlCommand Cmd = new SqlCommand();
Cmd.CommandType = CommandType.Text;
Cmd.Connection = conn;

for (int iRow = 0; iRow <= spidTable.Rows.Count - 1; iRow++)
{
Cmd.CommandText= "kill " + spidTable.Rows[iRow][0].ToString(); //强行关闭用户进程
Cmd.ExecuteNonQuery();
}