SQLDMO代码如下
SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
try
{
oSQLServer.LoginSecure = false;
oSQLServer.Connect(p_strServer, p_strUser, p_strPWD);
oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
oRestore.Database = p_strDataBaseName;
oRestore.Files = p_strBakFilePath;
oRestore.FileNumber = 1;
oRestore.ReplaceDatabase = true;

oRestore.SQLRestore(oSQLServer);
}
catch(Exception ex)
{
throw ex;
}
finally
{
oSQLServer.DisConnect();
}
由于备份中的物理文件路径和本机的路径不一致,因此无法恢复,如何解决

解决方案 »

  1.   

    并将取得的string值赋给oRestore.Files
      

  2.   

    不好改,使用数据库附加吧,用SQL语句就可以完成public static void DbAttach(string p_strServer, string p_strUser, string p_strPWD, string p_strDataBaseName, string p_strBakFilePath, string p_strBakFilePathLog)
    {
    try
    {
    string m_strSQL = ""; SqlConnection cn = new SqlConnection();  //创建连接
    cn.ConnectionString = "data source=" + p_strServer + ";database=master;uid=" + p_strUser + ";pwd=" + p_strPWD + "";
    cn.Open(); m_strSQL = m_strSQL + "If Not exists (select * from dbo.sysdatabases where name = '" + p_strDataBaseName + "') ";
    m_strSQL = m_strSQL + "  Begin";
    m_strSQL = m_strSQL + "      exec sp_attach_db '" + p_strDataBaseName + "', '" + p_strBakFilePath + "', '" + p_strBakFilePathLog + "'";
    m_strSQL = m_strSQL + "  End"; SqlCommand cmd = new SqlCommand(m_strSQL, cn);
    cmd.ExecuteNonQuery(); cn.Close(); }
    catch(Exception ex)
    {
    throw ex;
    }
    }