private void RestoreAtTimeExecute(ServerAccess ba, SqlServerAccess sa, string c, string dbName, DateTime time, RestoreOption opt) { try { using (new NetworkConnection(ba.uri, new NetworkCredential(ba.username, ba.password))) { string path = Path.Combine(ba.uri, ba.dailyfolder, c); DirectoryInfo dir = new DirectoryInfo(path); FileInfo[] files = dir.GetFiles("*.bak").OrderByDescending(p => p.CreationTime).ToArray(); var f = files.FirstOrDefault(); var filePath = f.FullName; var creationDate = f.CreationTime; FileInfo[] transactionFiles = dir.GetFiles("*.trn").OrderByDescending(p => p.CreationTime).ToArray(); using (new NetworkConnection(sa.uri, new NetworkCredential(sa.username, sa.password))) { string destPath = Path.Combine(sa.uri, sa.folder, f.Name); if (File.Exists(destPath)) { File.Delete(destPath); } File.Copy(filePath, destPath); var bakFilePath = destPath; var transactionFilesPath = CopyAllTransactionFiles(transactionFiles, sa, creationDate, time); destPath = destPath.Replace(sa.uri, sa.disk); var transactionFilesDestPath = new List <string>(); foreach (var tf in transactionFilesPath) { transactionFilesDestPath.Add(tf.Replace(sa.uri, sa.disk)); } SMOHelper restoreInstance = new SMOHelper(sa); restoreInstance.RestoreAtTime(destPath, transactionFilesDestPath, time, dbName, opt); if (File.Exists(bakFilePath)) { File.Delete(bakFilePath); } foreach (var fileToDel in transactionFilesPath) { if (File.Exists(fileToDel)) { File.Delete(bakFilePath); } } } } } catch (Exception ex) { Logger.Error(ex.Message); } }