public bool CreateDB(string strDbName, string strFileName)
        {            SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
            try
            {
                svr.Connect(_ServerName, _UserName, _Password);
                SQLDMO.QueryResults qr = svr.EnumProcesses(-1);
                int iColPIDNum = -1;
                int iColDbName = -1;
                for (int i = 1; i <= qr.Columns; i++)
                {
                    string strName = qr.get_ColumnName(i);
                    if (strName.ToUpper().Trim() == "SPID")
                    {
                        iColPIDNum = i;
                    }
                    else if (strName.ToUpper().Trim() == "DBNAME")
                    {
                        iColDbName = i;
                    }
                    if (iColPIDNum != -1 && iColDbName != -1)
                        break;
                }                for (int i = 1; i <= qr.Rows; i++)
                {
                    int lPID = qr.GetColumnLong(i, iColPIDNum);
                    string strDBName = qr.GetColumnString(i, iColDbName);
                    if (strDBName.ToUpper() == strDbName.ToUpper())
                        svr.KillProcess(lPID);
                }                SQLDMO.Restore res = new SQLDMO.RestoreClass();
                res.Action = 0;
                SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(StepCreateDb);
                res.PercentComplete += pceh;
                res.Files = strFileName;
           
                res.Database = strDbName;
                res.FileNumber = 1;
                res.ReplaceDatabase = true;
                string mdfFilePath_and_Name = Application.StartupPath + @"\DB\HzxCrm.mdf";
                string LogFilePath_and_Name = Application.StartupPath + @"\DB\HzxCrm_log.ldf";
                string FileName = "HzxCrm.mdf";
                res.RelocateFiles = "[HzxCrm.mdf]" + "," + "[" + mdfFilePath_and_Name + "]" + ",[HzxCrm_log.ldf]" + "," + "[" + LogFilePath_and_Name + "]";  //这句有问题
               
                res.SQLRestore(svr);
                MessageBox.Show("创建数据库成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);                return true;
            }
            catch(Exception EX) 
            {
                MessageBox.Show("创建数据库失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);                return false;
            }
            finally
            {
                svr.DisConnect();            }

解决方案 »

  1.   

    res.RelocateFiles 应该怎么给它赋值
      

  2.   

    也就是这个sql语句的效果
    RESTORE DATABASE MyNwind
       FROM MyNwind_1
       WITH NORECOVERY, 
          MOVE 'MyNwind' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf', 
          MOVE 'MyNwindLog1' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf'
    RESTORE LOG MyNwind
       FROM MyNwindLog1
       WITH RECOVERY