0

私はいくつかの解決策を試しましたが、以下は最も簡単なものですが、以下のエラーが発生します

論理ファイル 'RestoredProcessMananger' はデータベース 'RestoredProcessMananger' の一部ではありません。論理ファイル名を一覧表示するには、RESTORE FILELISTONLY を使用します。

RESTORE DATABASE が異常終了しています。

私は何を間違っていますか?アイデアは、他のプログラムで使用される DLL を作成して、ベースライン データベースをサーバーに再ロードし、そこにあるものを上書きできるようにすることです。

   ServerConnection connection = new ServerConnection("xxx", "sa", "srv$xxx");
   Server svr =new Server(connection);
   Restore res = new Restore();
   res.Database = "RestoredProcessMananger";
   res.Action = RestoreActionType.Database;
   res.Devices.AddDevice(@"C:\temp\ProcessManager.bak", DeviceType.File);
   res.ReplaceDatabase = true;

   res.RelocateFiles.Add(new RelocateFile("RestoredProcessMananger", _
          @"c:\ProcessManager2.mdf"));
   res.RelocateFiles.Add(new RelocateFile("RestoredProcessMananger_Log", _
          @"c:\ProcessManager2_log.ldf"));

   res.SqlRestore(svr);
   svr.Refresh();

編集1:修正

 public static void RestoreDatabase(string Server, //sqlserver //from CONFIG
        string BackupFilePath, //where the bak file I want to restore  //from CONFIG
        string destinationDatabaseName, //what the restored database will be called //from CONFIG
        string DatabaseFolder, //where the data/log files for the destination (break into 2 variables (2 different locations)) (get from GetDatabaseMDFFilePathName)
        string DatabaseFileName, //the destination MDF file name (get from GetDatabaseMDFFilePathName)
        string DatabaseLogFileName) //the destination LDF file name (get from GetDatabaseMDFFilePathName)
    {
        Server myServer = GetDatabases("xxx");
        Restore myRestore = new Restore();
        myRestore.Database = destinationDatabaseName;
        Database currentDb = myServer.Databases[destinationDatabaseName];
        if (currentDb != null)
            myServer.KillAllProcesses(destinationDatabaseName);
        myRestore.Devices.AddDevice(BackupFilePath, DeviceType.File);
        string DataFileLocation = DatabaseFolder + "\\" + destinationDatabaseName + ".mdf";
        string LogFileLocation = DatabaseFolder + "\\" + destinationDatabaseName + "_log.ldf";
        myRestore.RelocateFiles.Add(new RelocateFile(DatabaseFileName, DataFileLocation));
        myRestore.RelocateFiles.Add(new RelocateFile(DatabaseLogFileName, LogFileLocation));
        myRestore.ReplaceDatabase = true;
        myRestore.PercentCompleteNotification = 10;
        myRestore.SqlRestore(myServer);
        currentDb = myServer.Databases[destinationDatabaseName];
        currentDb.SetOnline();
    }
4

1 に答える 1