Exemplo n.º 1
1
        public void RestoreDatabase(String databaseName, String filePath, String serverName, String userName, String password, String dataFilePath, String logFilePath)
        {
            try
            {
                Restore sqlRestore = new Restore();

                BackupDeviceItem deviceItem = new BackupDeviceItem(filePath, DeviceType.File);
                sqlRestore.Devices.Add(deviceItem);
                sqlRestore.Database = databaseName;

                ServerConnection connection = new ServerConnection(serverName, userName, password);
                Server sqlServer = new Server(connection);

                Database db = sqlServer.Databases[databaseName];
                sqlRestore.Action = RestoreActionType.Database;
                String dataFileLocation = dataFilePath + databaseName + ".mdf";
                String logFileLocation = logFilePath + databaseName + "_Log.ldf";
                db = sqlServer.Databases[databaseName];
                RelocateFile rf = new RelocateFile(databaseName, dataFileLocation);

                sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName, dataFileLocation));
                sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName + "_log", logFileLocation));
                sqlRestore.ReplaceDatabase = true;
                sqlRestore.Complete += new ServerMessageEventHandler(sqlRestore_Complete);
                sqlRestore.PercentCompleteNotification = 10;
                sqlRestore.PercentComplete += new PercentCompleteEventHandler(sqlRestore_PercentComplete);

                sqlRestore.SqlRestore(sqlServer);

                db = sqlServer.Databases[databaseName];

                db.SetOnline();

                sqlServer.Refresh();
            }
            catch (SqlServerManagementException ex)
            {
                ex.Message.ToString();
            }
        }
Exemplo n.º 2
0
        public static void MakeRestore(ServerMessageEventHandler onComplete, Guid id,
            string serverName, string dbName, string uncDir, string userName, string password)
        {
            var sc = new ServerConnection(serverName);
            sc.LoginSecure = false;
            sc.Login = userName;
            sc.Password = password;

            var srv = new Server(sc);
            var rest = new Restore();

            rest.Action = RestoreActionType.Database;
            rest.Database = dbName;
            rest.Devices.AddDevice(Path.Combine(uncDir, rest.Database + ".bak"), DeviceType.File);
            rest.ReplaceDatabase = true;

            var headers = rest.ReadBackupHeader(srv);
            var query = from DataRow row in headers.Rows
                        where (string)row["BackupName"] == id.ToString()
                        select (Int16)row["Position"];

            rest.FileNumber = query.First();

            if (onComplete != null) rest.Complete += onComplete;
            rest.SqlRestore(srv);
        }
Exemplo n.º 3
0
        public SqlServerBackup(string backupPath,Server server)
        {
            Restore restore=new Restore();
            restore.Devices.AddDevice(backupPath,DeviceType.File);
            DataTable dt= restore.ReadBackupHeader(server);

            if(dt.Rows.Count==1)
            {
                /*
               DataRow row = dt.Rows[0];
               BackupName = row[""].ToString();
               BackupDescription = row[""].ToString();
               Compressed = row[""].ToString();
               BackupTypeDescription = row[""].ToString();
               DifferentialBaseLSN = row[""].ToString();
               DifferentialBaseGUID = row[""].ToString();
               BackupSetGUID = row[""].ToString();
               ServerName = row[""].ToString();
               DatabaseName = row[""].ToString();
               DatabaseVersion = row[""].ToString();

               BackupStartDate = row[""].ToString();
               BackupFinishDate = row[""].ToString();
               MachineName = row[""].ToString();
               CompatibilityLevel = row[""].ToString();
               DatabaseVersion = row[""].ToString();
               DatabaseVersion = row[""].ToString();
               DatabaseVersion = row[""].ToString();
                 */
            }
        }
        protected override void ExecuteTask()
        {
            var server = new Server(ServerName);
            server.ConnectionContext.LoginSecure = true;
            server.ConnectionContext.Connect();

            if (!ReplaceDB)
            {
                if (server.Databases.Contains(DBName))
                {
                    Log(Level.Info, DBName + " exists on " + ServerName + " and will not be replaced");
                    return;
                }
            }

            Log(Level.Info, "Restoring database " + DBName + " to " + ServerName);
            var restore = new Restore();
            restore.Database = DBName;
            restore.ReplaceDatabase = ReplaceDB;
            restore.Action = RestoreActionType.Database;
            restore.Devices.AddDevice(BackupPath, DeviceType.File);

            var table = restore.ReadFileList(server);
            restore.RelocateFiles.Add(new RelocateFile(table.Rows[0][0].ToString(), Path.Combine(server.Settings.DefaultFile, DBName + ".mdf")));
            restore.RelocateFiles.Add(new RelocateFile(table.Rows[1][0].ToString(), Path.Combine(server.Settings.DefaultFile, DBName + "_Log.ldf")));

            restore.PercentComplete += UpdatePercent;
            restore.Complete += RestoreCompleted;

            restore.SqlRestore(server);

            if (server.ConnectionContext.IsOpen)
                server.ConnectionContext.Disconnect();
        }
Exemplo n.º 5
0
		public void RestoreDatabase(SqlConnectionStringBuilder sqlConnection, String backUpFile)
		{
			ServerConnection serverConnection = null;
			try
			{
				if (!FileManager.FileExists(backUpFile))
				{
					throw new FileNotFoundException();
				}
				serverConnection = new ServerConnection(sqlConnection.DataSource, sqlConnection.UserID, sqlConnection.Password);
				Server sqlServer = new Server(serverConnection);
				Restore restoreDatabase = new Restore()
				{
					Action = RestoreActionType.Database,
					Database = sqlConnection.InitialCatalog,
				};
				BackupDeviceItem backupItem = new BackupDeviceItem(backUpFile, DeviceType.File);
				restoreDatabase.Devices.Add(backupItem);
				restoreDatabase.ReplaceDatabase = true;
				restoreDatabase.SqlRestore(sqlServer);
			}
			finally
			{
				if (serverConnection != null && serverConnection.IsOpen)
				{
					serverConnection.Disconnect();
				}
			}
		}
        public static void RestoreDatabase(string databaseName, string backupName, string serverName = Server) {
            Server server = string.IsNullOrEmpty(serverName) ? new Server() : new Server(serverName);
            var restore = new Restore {
                Database = databaseName,
                Action = RestoreActionType.Database,
                ReplaceDatabase = true,
                NoRecovery = false
            };

            restore.Devices.AddDevice(backupName + ".bak", DeviceType.File);
            server.KillAllProcesses(databaseName);
            restore.SqlRestore(server);
        }
Exemplo n.º 7
0
 /// <summary>
 /// Initializes a new restore instance
 /// </summary>
 /// <param name="archive">
 /// The SkyFloe archive for the restore
 /// </param>
 /// <param name="session">
 /// The restore session being processed
 /// </param>
 public GlacierRestore(GlacierArchive archive, Restore.Session session)
 {
     this.archive = archive;
      if (session.State == SkyFloe.Restore.SessionState.Pending)
     ScheduleRetrievals(session);
      this.downloader = new GlacierDownloader(
     this.archive.Glacier,
     this.archive.Vault
      );
      this.retrievalLimiter = new IO.RateLimiter(
     Math.Min(session.RateLimit, MaxRetrievalRate)
      );
 }
        static void Main(string[] args)
        {
            if (args.Length != 3)
                return;
            string serverName = args[0];
            string databaseName = args[1];
            string restoreFilePath = args[2];

            Restore restoreDB = new Restore();
            restoreDB.Database = databaseName;
            restoreDB.Action = RestoreActionType.Database;
            restoreDB.Devices.AddDevice(@restoreFilePath, DeviceType.File);

            restoreDB.ReplaceDatabase = true;

            /* If you have a differential or log restore after the current restore,
             * you would need to specify NoRecovery = true, this will ensure no
             * recovery performed and subsequent restores are allowed. It means it
             * the database will be in a restoring state. */
            restoreDB.NoRecovery = false;

            restoreDB.PercentComplete += (obj, e) => { Console.WriteLine("Percent completed: {0}%.", e.Percent); };

            Server srv = new Server(@serverName);

            /* Check if database exists, if not, create one. */
            Database db = srv.Databases[databaseName];
            if (db == null)
            {
                db = new Database(srv,databaseName);
                Console.WriteLine("Creating database...");
                db.Create();
                Console.WriteLine("Created {0}.", databaseName);
            }
            Console.WriteLine("Verifying backup media...");
            bool valid = restoreDB.SqlVerify(srv);
            if (valid)
            {
                Console.WriteLine("Backup media is valid.");
                Console.WriteLine("Starting restore...");
                restoreDB.SqlRestore(srv);
            }
            else
            {
                Console.WriteLine("Backup media is invalid. Aborting operation...");
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Restore DB from backup.
        /// </summary>
        private static bool RestoreDB()
        {
            string connectionString =
            ConfigurationManager.ConnectionStrings["DeathsConnectionString"].ToString();
              var builder = new SqlConnectionStringBuilder(connectionString);
              var myServer = new Server(builder.DataSource);

              var res = new Restore();
              res.Database = "Deaths";

              res.Action = RestoreActionType.Database;
              res.Devices.AddDevice(
            Environment.CurrentDirectory + @"\Resources\DeathsFullBackup", DeviceType.File);
              res.ReplaceDatabase = true;
              res.SqlRestore(myServer);
              return true;
        }
Exemplo n.º 10
0
        public void Restore(BackupParameters parameters)
        {
            var databaseName = parameters.DatabaseName;
            var filePath = GetFullPathFrom(parameters.FilePath);

            Logger.WriteLine("Restoring {0} from file {1}", databaseName, filePath);
            var server = new Server(parameters.Server);
            try
            {
                server.ConnectionContext.LoginSecure = true;
                server.ConnectionContext.Connect();
                var restore = new Restore { Database = databaseName, Action = RestoreActionType.Database };
                restore.Devices.AddDevice(filePath, DeviceType.File);
                restore.ReplaceDatabase = true;

                var database = server.Databases[databaseName];
                if (database == null)
                {
                    Logger.WriteLine("Database {0} does not exist", databaseName);
                    return;
                }

                var users = server.GetLoginUsers(database);
                Logger.WriteLine("User mappings to restore: {0}", string.Join(",", users));

                RelocateFiles(database, restore);

                server.RenewConnection();

                restore.PercentComplete += HandlePercentComplete;
                restore.Complete += HandleComplete;
                restore.SqlRestore(server);

                RestoreUserMappings(server, users, databaseName);
            }
            finally
            {
                if (server.ConnectionContext.IsOpen)
                {
                    Logger.Write("Closing connection...");
                    server.ConnectionContext.Disconnect();
                    Logger.WriteLine("OK");
                }
            }
        }
Exemplo n.º 11
0
 private void RelocateDataFiles(Database database, Restore restore)
 {
     for (var ii = 0; ii < database.FileGroups.Count; ii++)
     {
         var group = database.FileGroups[ii];
         Logger.WriteLine("Group: " + @group.Name);
         for (var jj = 0; jj < @group.Files.Count; jj++)
         {
             var file = @group.Files[jj];
             Logger.WriteLine("Name: {0}", file.Name);
             Logger.WriteLine("IsPrimary: {0}", file.IsPrimaryFile);
             Logger.WriteLine("FileName: {0}", file.FileName);
             if (file.IsPrimaryFile)
             {
                 var physicalFilename = string.Format("{0}.mdf", database.Name);
                 var physicalPath = Path.Combine(Settings.DataDirectory, physicalFilename);
                 restore.RelocateFiles.Add(new RelocateFile(file.Name, physicalPath));
                 Logger.WriteLine("Relocating data file [" + file.Name + "] to " + physicalPath);
             }
         }
     }
 }
        public BackupInfo GetBackupInfo(string backupFileName, Server server)
        {
            var restoreDb = new Restore();
            var info = new BackupInfo();
            restoreDb.Action = RestoreActionType.Database;
            restoreDb.Devices.AddDevice(backupFileName, DeviceType.File);
            DataTable fileList = restoreDb.ReadFileList(server);

            foreach (DataRow row in fileList.Rows)
            {
                if (row.Field<string>("Type").Equals("D"))
                {
                    info.DataLogicalName = row.Field<string>("LogicalName");
                }
                else if (row.Field<string>("Type").Equals("L"))
                {
                    info.LogFiles.Add(new DatabaseFile {LogicalName = row.Field<string>("LogicalName")});
                }
            }

            return info;
        }
Exemplo n.º 13
0
        public static void RestoreDatabase(this Server server, string databaseName, string filePath)
        {
            var res = new Restore();

            res.Devices.AddDevice(filePath, DeviceType.File);

            var DataFile = new RelocateFile();
            string MDF = res.ReadFileList(server).Rows[0][1].ToString();
            DataFile.LogicalFileName = res.ReadFileList(server).Rows[0][0].ToString();
            DataFile.PhysicalFileName = server.Databases[databaseName].FileGroups[0].Files[0].FileName;

            var LogFile = new RelocateFile();
            string LDF = res.ReadFileList(server).Rows[1][1].ToString();
            LogFile.LogicalFileName = res.ReadFileList(server).Rows[1][0].ToString();
            LogFile.PhysicalFileName = server.Databases[databaseName].LogFiles[0].FileName;

            res.RelocateFiles.Add(DataFile);
            res.RelocateFiles.Add(LogFile);

            res.Database = databaseName;
            res.NoRecovery = false;
            res.ReplaceDatabase = true;
            res.SqlRestore(server);
        }
Exemplo n.º 14
0
    public static void Main()
    {
        // Connect to the local, default instance of SQL Server.
        Server srv = new Server("DESKTOP-EPNEITS");
        // Reference the AdventureWorks2012 database.
        Database db = default(Database);

        db = srv.Databases["Rating"];

        // Store the current recovery model in a variable.
        int recoverymod;

        recoverymod = (int)db.DatabaseOptions.RecoveryModel;

        // Define a Backup object variable.
        Backup bk = new Backup();

        // Specify the type of backup, the description, the name, and the database to be backed up.
        bk.Action = BackupActionType.Database;
        bk.BackupSetDescription = "Full backup of Rating";
        bk.BackupSetName        = "Rating " + DateTime.Now.ToString("yyyy-MM-dd") + " Backup";
        bk.Database             = "Rating";

        // Declare a BackupDeviceItem by supplying the backup device file name in the constructor, and the type of device is a file.
        BackupDeviceItem bdi = default(BackupDeviceItem);

        bdi = new BackupDeviceItem("Full_Backup1", DeviceType.File);

        // Add the device to the Backup object.
        bk.Devices.Add(bdi);
        // Set the Incremental property to False to specify that this is a full database backup.
        bk.Incremental = false;

        // Set the expiration date.
        System.DateTime backupdate = new System.DateTime();
        backupdate        = new System.DateTime(2018, 10, 5);
        bk.ExpirationDate = backupdate;

        // Specify that the log must be truncated after the backup is complete.
        bk.LogTruncation = BackupTruncateLogType.Truncate;

        // Run SqlBackup to perform the full database backup on the instance of SQL Server.
        bk.SqlBackup(srv);

        // Inform the user that the backup has been completed.
        System.Console.WriteLine("Full Backup complete.");

        // Remove the backup device from the Backup object.
        bk.Devices.Remove(bdi);

        // Make a change to the database, in this case, add a table called test_table.
        Table t = default(Table);

        t = new Table(db, "test_table");
        Column c = default(Column);

        c = new Column(t, "col", DataType.Int);
        t.Columns.Add(c);
        t.Create();

        // Create another file device for the differential backup and add the Backup object.
        BackupDeviceItem bdid = default(BackupDeviceItem);

        bdid = new BackupDeviceItem("Test_Differential_Backup1", DeviceType.File);

        // Add the device to the Backup object.
        bk.Devices.Add(bdid);

        // Set the Incremental property to True for a differential backup.
        bk.Incremental = true;

        // Run SqlBackup to perform the incremental database backup on the instance of SQL Server.
        bk.SqlBackup(srv);

        // Inform the user that the differential backup is complete.
        System.Console.WriteLine("Differential Backup complete.");

        // Remove the device from the Backup object.
        bk.Devices.Remove(bdid);

        // Delete the AdventureWorks2012 database before restoring it
        // db.Drop();

        // Define a Restore object variable.
        Restore rs = new Restore();

        // Set the NoRecovery property to true, so the transactions are not recovered.
        rs.NoRecovery = true;

        // Add the device that contains the full database backup to the Restore object.
        rs.Devices.Add(bdi);

        // Specify the database name.
        rs.Database = "Rating";

        // Restore the full database backup with no recovery.
        rs.SqlRestore(srv);

        // reacquire a reference to the database
        db = srv.Databases["Rating"];

        // Remove the device from the Restore object.
        rs.Devices.Remove(bdi);

        // Set the NoRecovery property to False.
        rs.NoRecovery = false;

        // Add the device that contains the differential backup to the Restore object.
        rs.Devices.Add(bdid);

        // Restore the differential database backup with recovery.
        rs.SqlRestore(srv);

        // Inform the user that the differential database restore is complete.
        System.Console.WriteLine("Differential Database Restore complete.");

        // Remove the device.
        rs.Devices.Remove(bdid);

        // Set the database recovery mode back to its original value.
        db.RecoveryModel = (RecoveryModel)recoverymod;

        // Drop the table that was added.
        db.Tables["test_table"].Drop();
        db.Alter();

        //// Remove the backup files from the hard disk.
        //// This location is dependent on the installation of SQL Server
        //System.IO.File.Delete("C:\\Program Files\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER\\MSSQL\\Backup\\Test_Full_Backup1");
        //System.IO.File.Delete("C:\\Program Files\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER\\MSSQL\\Backup\\Test_Differential_Backup1");
    }
Exemplo n.º 15
0
        private void RestoreBackup(string path, string restore_name, RestoreOption restoreOption)
        {
            try
            {
                _restoreOption = restoreOption;
                InitConnexion();
                if (!_smoServer.Databases.Contains(restore_name))
                {
                    var database = new Database(_smoServer, restore_name);
                    database.Create();
                }
                Logger.Success("SQL connected");
                _targetDatabase = _smoServer.Databases[restore_name];
                _targetDatabase.RecoveryModel = RecoveryModel.Simple;
                _targetDatabase.Alter(TerminationClause.RollbackTransactionsImmediately);

                Restore restore = new Restore();

                var backupDeviceItem = new BackupDeviceItem(path, DeviceType.File);
                restore.Devices.Add(backupDeviceItem);
                restore.Database        = restore_name;
                restore.ReplaceDatabase = true;
                restore.NoRecovery      = false;

                if (_mode == RestoreMode.AtTime)
                {
                    restore.NoRecovery = true;
                }

                var fileList = restore.ReadFileList(_smoServer);

                var dataFile = new RelocateFile();
                dataFile.LogicalFileName  = fileList.Rows[0][0].ToString();
                dataFile.PhysicalFileName = _smoServer.Databases[restore_name].FileGroups[0].Files[0].FileName;

                var logFile = new RelocateFile();
                logFile.LogicalFileName  = fileList.Rows[1][0].ToString();
                logFile.PhysicalFileName = _smoServer.Databases[restore_name].LogFiles[0].FileName;

                restore.RelocateFiles.Add(dataFile);
                restore.RelocateFiles.Add(logFile);

                _smoServer.KillAllProcesses(restore_name);

                restore.PercentComplete += Restore_PercentComplete;
                restore.SqlRestoreAsync(_smoServer);
                restore.Information += Restore_Information;
                restore.Wait();
                Restore_Complete();
            }
            catch (SmoException ex)
            {
                Logger.Error("SMO Message : " + ex.Message);
                Logger.Error("SMO Exception : " + ex.InnerException);
            }
            catch (IOException ex)
            {
                Logger.Error("IO Message : " + ex.Message);
                Logger.Error("IO Exception : " + ex.InnerException);
            }
            catch (Exception ex)
            {
                Logger.Error("Message : " + ex.Message);
                Logger.Error("Exception : " + ex.InnerException);
            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// Creates new BackupSet info
        /// </summary>
        /// <returns></returns>
        public static BackupSetInfo Create(Restore restore, Server server)
        {
            BackupSet backupSet = restore.BackupSet;
            Dictionary <string, LocalizedPropertyInfo> properties = new Dictionary <string, LocalizedPropertyInfo>();

            string bkSetComponent;
            string bkSetType;

            CommonUtilities.GetBackupSetTypeAndComponent(backupSet.BackupSetType, out bkSetType, out bkSetComponent);

            if (server.Version.Major > 8 && backupSet.IsCopyOnly)
            {
                bkSetType += SR.RestoreCopyOnly;
            }

            properties.Add(NamePropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = NamePropertyName,
                PropertyValue       = backupSet.Name,
                PropertyDisplayName = SR.RestoreBackupSetName
            });
            properties.Add(BackupComponentPropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = BackupComponentPropertyName,
                PropertyValue       = bkSetComponent,
                PropertyDisplayName = SR.RestoreBackupSetType
            });
            properties.Add(BackupTypePropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = BackupTypePropertyName,
                PropertyValue       = bkSetType,
                PropertyDisplayName = SR.RestoreBackupSetComponent
            });
            properties.Add(ServerNamePropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = ServerNamePropertyName,
                PropertyValue       = backupSet.ServerName,
                PropertyDisplayName = SR.RestoreBackupSetServer
            });
            properties.Add(DatabaseNamePropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = DatabaseNamePropertyName,
                PropertyValue       = backupSet.DatabaseName,
                PropertyDisplayName = SR.RestoreBackupSetDatabase
            });
            properties.Add(PositionPropertyName, new LocalizedPropertyInfo
            {
                PropertyName             = PositionPropertyName,
                PropertyValueDisplayName = Convert.ToString(backupSet.Position, CultureInfo.CurrentCulture),
                PropertyValue            = backupSet.Position,
                PropertyDisplayName      = SR.RestoreBackupSetPosition
            });
            properties.Add(FirstLsnPropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = FirstLsnPropertyName,
                PropertyValue       = backupSet.FirstLsn,
                PropertyDisplayName = SR.RestoreBackupSetFirstLsn
            });
            properties.Add(LastLsnPropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = LastLsnPropertyName,
                PropertyValue       = backupSet.LastLsn,
                PropertyDisplayName = SR.RestoreBackupSetLastLsn
            });
            properties.Add(FullLsnPropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = FullLsnPropertyName,
                PropertyValue       = backupSet.DatabaseBackupLsn,
                PropertyDisplayName = SR.RestoreBackupSetFullLsn
            });
            properties.Add(CheckpointLsnPropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = CheckpointLsnPropertyName,
                PropertyValue       = backupSet.CheckpointLsn,
                PropertyDisplayName = SR.RestoreBackupSetCheckpointLsn
            });
            properties.Add(StartDatePropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = StartDatePropertyName,
                PropertyValue       = backupSet.BackupStartDate,
                PropertyDisplayName = SR.RestoreBackupSetStartDate
            });
            properties.Add(FinishDatePropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = FinishDatePropertyName,
                PropertyValue       = backupSet.BackupFinishDate,
                PropertyDisplayName = SR.RestoreBackupSetFinishDate
            });
            properties.Add(SizePropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = SizePropertyName,
                PropertyValue       = backupSet.BackupSize,
                PropertyDisplayName = SR.RestoreBackupSetSize,
            });
            properties.Add(UserNamePropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = UserNamePropertyName,
                PropertyValue       = backupSet.UserName,
                PropertyDisplayName = SR.RestoreBackupSetUserName,
            });
            properties.Add(ExpirationPropertyName, new LocalizedPropertyInfo
            {
                PropertyName        = ExpirationPropertyName,
                PropertyValue       = backupSet.ExpirationDate,
                PropertyDisplayName = SR.RestoreBackupSetExpiration,
            });
            properties.Add(DatabaseFileInfo.IdPropertyName, new LocalizedPropertyInfo
            {
                PropertyName  = DatabaseFileInfo.IdPropertyName,
                PropertyValue = backupSet.BackupSetGuid
            });

            return(new BackupSetInfo(properties));
        }
Exemplo n.º 17
0
        private void btn_restore_Click(object sender, EventArgs e)
        {
            if (cmbDataBase.SelectedIndex.ToString().Equals(""))
            {
                MessageBox.Show("Please choose Database", "Server", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            // If there was a SQL connection created
            if (_srvr != null)
            {
                try
                {
                    btn_backup.Enabled = false;
                    btn_restore.Enabled = false;
                    db_change.Enabled = false;
                    server_change.Enabled = false;

                    Cursor = Cursors.WaitCursor;
                    // If the user has chosen the file from which he wants the database to be restored
                    // Create a new database restore operation
                    var rstDatabase = new Restore
                    {
                        Action = RestoreActionType.Database,
                        Database = cmbDataBase.SelectedItem.ToString()
                    };
                    // Set the restore type to a database restore
                    // Set the database that we want to perform the restore on
                    // Set the backup device from which we want to restore, to a file
                    var bkpDevice = new BackupDeviceItem(_dBpath + "\\Backup.bak", DeviceType.File);
                    // Add the backup device to the restore type
                    rstDatabase.Devices.Add(bkpDevice);
                    // If the database already exists, replace it
                    rstDatabase.ReplaceDatabase = true;
                    // Perform the restore
                    rstDatabase.SqlRestore(_srvr);
                    MessageBox.Show("Database " + cmbDataBase.Text + " succefully restored", "Server", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception)
                {
                    MessageBox.Show("ERROR: An error ocurred while restoring the database", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    Cursor = Cursors.Arrow;

                    btn_backup.Enabled = true;
                    btn_restore.Enabled = true;
                    db_change.Enabled = true;
                    server_change.Enabled = true;
                }
            }
            else
            {
                MessageBox.Show("ERROR: A connection to a SQL server was not established.", "Server", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Cursor = Cursors.Arrow;
            }
        }
Exemplo n.º 18
0
        /// <summary>
        /// Execute backup
        /// </summary>
        public override void Execute()
        {
            this.backup             = new Backup();
            this.backup.Database    = this.backupInfo.DatabaseName;
            this.backup.Action      = this.backupActionType;
            this.backup.Incremental = this.isBackupIncremental;
            this.SetBackupProps();

            try
            {
                if (this.backup.Action == BackupActionType.Files)
                {
                    IDictionaryEnumerator filegroupEnumerator = this.backupInfo.SelectedFileGroup.GetEnumerator();
                    filegroupEnumerator.Reset();
                    while (filegroupEnumerator.MoveNext())
                    {
                        string currentKey = Convert.ToString(filegroupEnumerator.Key,
                                                             System.Globalization.CultureInfo.InvariantCulture);
                        string currentValue = Convert.ToString(filegroupEnumerator.Value,
                                                               System.Globalization.CultureInfo.InvariantCulture);
                        if (currentKey.IndexOf(",", StringComparison.Ordinal) < 0)
                        {
                            // is a file group
                            this.backup.DatabaseFileGroups.Add(currentValue);
                        }
                        else
                        {
                            // is a file
                            int idx = currentValue.IndexOf(".", StringComparison.Ordinal);
                            currentValue = currentValue.Substring(idx + 1, currentValue.Length - idx - 1);
                            this.backup.DatabaseFiles.Add(currentValue);
                        }
                    }
                }

                this.backup.BackupSetName = this.backupInfo.BackupsetName;

                for (int i = 0; i < this.backupInfo.BackupPathList.Count; i++)
                {
                    string destName   = Convert.ToString(this.backupInfo.BackupPathList[i], System.Globalization.CultureInfo.InvariantCulture);
                    int    deviceType = (int)(this.backupInfo.BackupPathDevices[destName]);
                    switch (deviceType)
                    {
                    case (int)DeviceType.LogicalDevice:
                        int backupDeviceType =
                            GetDeviceType(Convert.ToString(destName,
                                                           System.Globalization.CultureInfo.InvariantCulture));

                        if (this.backupDeviceType == BackupDeviceType.Disk && backupDeviceType == constDeviceTypeFile)
                        {
                            this.backup.Devices.AddDevice(destName, DeviceType.LogicalDevice);
                        }
                        break;

                    case (int)DeviceType.File:
                        if (this.backupDeviceType == BackupDeviceType.Disk)
                        {
                            this.backup.Devices.AddDevice(destName, DeviceType.File);
                        }
                        break;
                    }
                }

                this.backup.CopyOnly           = this.backupInfo.IsCopyOnly;
                this.backup.FormatMedia        = this.backupInfo.FormatMedia;
                this.backup.Initialize         = this.backupInfo.Initialize;
                this.backup.SkipTapeHeader     = this.backupInfo.SkipTapeHeader;
                this.backup.Checksum           = this.backupInfo.Checksum;
                this.backup.ContinueAfterError = this.backupInfo.ContinueAfterError;

                if (!string.IsNullOrEmpty(this.backupInfo.MediaName))
                {
                    this.backup.MediaName = this.backupInfo.MediaName;
                }

                if (!string.IsNullOrEmpty(this.backupInfo.MediaDescription))
                {
                    this.backup.MediaDescription = this.backupInfo.MediaDescription;
                }

                if (this.backupInfo.TailLogBackup &&
                    !this.backupRestoreUtil.IsHADRDatabase(this.backupInfo.DatabaseName) &&
                    !this.backupRestoreUtil.IsMirroringEnabled(this.backupInfo.DatabaseName))
                {
                    this.backup.NoRecovery = true;
                }

                if (this.backupInfo.LogTruncation)
                {
                    this.backup.LogTruncation = BackupTruncateLogType.Truncate;
                }
                else
                {
                    this.backup.LogTruncation = BackupTruncateLogType.NoTruncate;
                }

                if (!string.IsNullOrEmpty(this.backupInfo.BackupSetDescription))
                {
                    this.backup.BackupSetDescription = this.backupInfo.BackupSetDescription;
                }

                if (this.backupInfo.RetainDays >= 0)
                {
                    this.backup.RetainDays = this.backupInfo.RetainDays;
                }
                else
                {
                    this.backup.ExpirationDate = this.backupInfo.ExpirationDate;
                }

                this.backup.CompressionOption = (BackupCompressionOptions)this.backupInfo.CompressionOption;

                if (!string.IsNullOrEmpty(this.backupInfo.EncryptorName))
                {
                    this.backup.EncryptionOption = new BackupEncryptionOptions((BackupEncryptionAlgorithm)this.backupInfo.EncryptionAlgorithm,
                                                                               (BackupEncryptorType)this.backupInfo.EncryptorType,
                                                                               this.backupInfo.EncryptorName);
                }

                if (this.dataContainer.Server.ConnectionContext != null)
                {
                    // Execute backup
                    this.backup.SqlBackup(this.dataContainer.Server);

                    // Verify backup if required
                    if (this.backupInfo.VerifyBackupRequired)
                    {
                        Restore restore = new Restore();
                        restore.Devices.AddRange(this.backup.Devices);
                        restore.Database = this.backup.Database;

                        string errorMessage = null;
                        restore.SqlVerifyLatest(this.dataContainer.Server, out errorMessage);
                        if (errorMessage != null)
                        {
                            throw new DisasterRecoveryException(errorMessage);
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (this.serverConnection != null)
                {
                    this.serverConnection.Disconnect();
                }
                if (this.dataContainer != null)
                {
                    this.dataContainer.Dispose();
                }
            }
        }
Exemplo n.º 19
0
 /// <summary>
 /// Starts or resumes a restore session
 /// </summary>
 /// <param name="session">
 /// The restore session to execute
 /// </param>
 public void ExecuteRestore(Restore.Session session)
 {
     Execute(new Tasks.ExecuteRestore() { Session = session });
 }
Exemplo n.º 20
0
 /// <summary>
 /// Starts/resumes a restore session
 /// </summary>
 /// <param name="session">
 /// The session to execute
 /// </param>
 static void ExecuteSession(Restore.Session session)
 {
     engine.ExecuteRestore(session);
      Console.WriteLine("   Restore complete.");
 }
        static void Main()
        {
            // For remote connection, remote server name / ServerInstance needs to be specified
            ServerConnection srvConn2 = new ServerConnection("machinename" /* <--default sql instance on machinename*/);     // or (@"machinename\sqlinstance") for named instances

            srvConn2.LoginSecure  = false;
            srvConn2.Login        = "******";
            srvConn2.Password     = "******";
            srvConn2.DatabaseName = "msdb";
            Server srv3 = new Server(srvConn2);

            //server info
            Console.WriteLine("servername:{0} ---- version:{1}", srv3.Name, srv3.Information.Version);

            //server root directory
            string serverRootDir = srv3.Information.RootDirectory;
            //server backup directory
            string serverBackupDir = srv3.Settings.BackupDirectory;
            //database primary directory
            string databasePrimaryFilepath = srv3.Databases[srvConn2.DatabaseName].PrimaryFilePath;

            Console.WriteLine("server_root_dir:{0}\nserver_backup_dir:{1}\ndatabase_primary_dir{2}", serverRootDir, serverBackupDir, databasePrimaryFilepath);

            Backup bkpDbFull = new Backup();

            bkpDbFull.Action = BackupActionType.Database;
            //comment out copyonly ....
            bkpDbFull.CopyOnly = true;     //copy only, just for testing....avoid messing up with existing backup processes
            bkpDbFull.Database = srvConn2.DatabaseName;

            //backup file name
            string backupfile = $"\\backuptest_{DateTime.Now.ToString("dd/MM/yyyy/hh/mm/ss")}.bak";

            //add multiple files, in each location
            bkpDbFull.Devices.AddDevice(serverRootDir + backupfile, DeviceType.File);
            bkpDbFull.Devices.AddDevice(serverBackupDir + backupfile, DeviceType.File);
            bkpDbFull.Devices.AddDevice(databasePrimaryFilepath + backupfile, DeviceType.File);
            bkpDbFull.Initialize = true;

            foreach (BackupDeviceItem backupdevice in bkpDbFull.Devices)
            {
                Console.WriteLine("deviceitem:{0}", backupdevice.Name);
            }

            //backup is split/divided amongst the 3 devices
            bkpDbFull.SqlBackup(srv3);

            Restore restore = new Restore();

            restore.Devices.AddRange(bkpDbFull.Devices);
            DataTable backupHeader = restore.ReadBackupHeader(srv3);


            //IsCopyOnly=True
            for (int r = 0; r < backupHeader.Rows.Count; r++)
            {
                for (int c = 0; c < backupHeader.Columns.Count; c++)
                {
                    Console.Write("{0}={1}\n", backupHeader.Columns[c].ColumnName, (string.IsNullOrEmpty(backupHeader.Rows[r].ItemArray[c].ToString())? "**": backupHeader.Rows[r].ItemArray[c].ToString()));
                }
            }

            srvConn2.Disconnect();     //redundant
        }
Exemplo n.º 22
0
     public static void RestoreDB(string backUpFilePath, string databaseName)
     {
         try
         {
             Console.WriteLine("Restore operation started");
             Restore restore = new Restore();
             //Set type of backup to be performed to database
             restore.Database = databaseName;
             restore.Action = RestoreActionType.Database;
             //Set up the backup device to use filesystem.         
             restore.Devices.AddDevice(backUpFilePath, DeviceType.File);
             //set ReplaceDatabase = true to create new database
             //regardless of the existence of specified database
             restore.ReplaceDatabase = true;
             //If you have a differential or log restore to be followed,
             //you would specify NoRecovery = true
             restore.NoRecovery = false;
             //if you want to restore to a different location, specify
             //the logical and physical file names
             restore.RelocateFiles.Add(new RelocateFile("Test",
 @"C:\Temp\Test.mdf"));
             restore.RelocateFiles.Add(new RelocateFile("Test_Log",
 @"C:\Temp\Test_Log.ldf"));
             ServerConnection connection = new
 ServerConnection(@"SERVER_NAME");
             //my SQL user doesnt have sufficient permissions,
             //so i am using my windows account
             connection.LoginSecure = true;
             //connection.LoginSecure = false;
             //connection.Login = "******";
             //connection.Password = "******";
             Server sqlServer = new Server(connection);
             //SqlRestore method starts to restore database           
             restore.SqlRestore(sqlServer);
             Console.WriteLine("Restore operation succeeded");
         }
         catch (Exception ex)
         {
             Console.WriteLine("Restore operation failed");
             Console.WriteLine(ex.Message);
         }
         Console.ReadLine();
     }
        /// <summary>
        /// Handles the Click event of the btnFinish control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        private void btnFinish_Click(object sender, EventArgs e)
        {
            try
            {
                Cursor = Cursors.WaitCursor;
                var restore = new Restore
                {
                    Action             = RestoreActionType.Database,
                    Database           = txtDatabaseName.Text.Trim(),
                    ReplaceDatabase    = true,
                    ContinueAfterError = true
                };

                if (!System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + DatabaseTemplatePath))
                {
                    XtraMessageBox.Show(ResourceHelper.GetResourceValueByName("ResDatabaseTempNotExist"), ResourceHelper.GetResourceValueByName("ResExceptionCaption"),
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                var backupDeviceItem = new BackupDeviceItem(AppDomain.CurrentDomain.BaseDirectory + DatabaseTemplatePath, DeviceType.File);
                restore.Devices.Add(backupDeviceItem);
                var fileList = restore.ReadFileList(_server);

                restore.RelocateFiles.Add(new RelocateFile(fileList.Rows[0][0].ToString().Trim(), btnDatabasePath.Text + @"\" + txtDatabaseName.Text.Trim() + ".mdf"));
                restore.RelocateFiles.Add(new RelocateFile(fileList.Rows[1][0].ToString().Trim(), btnDatabasePath.Text + @"\" + txtDatabaseName.Text.Trim() + "_log.ldf"));

                restore.SqlRestore(_server);
                var database = _server.Databases[txtDatabaseName.Text.Trim()];
                if (database != null)
                {
                    database.SetOnline();
                }

                ////LinhMC change logicalName, ThangNK comment lại khi chuyển sang tư vấn nó ko lỗi
                //if (_server != null)
                //{
                //    var databaseName = txtDatabaseName.Text.Trim();
                //    string strCommand = "ALTER DATABASE " + databaseName + " MODIFY FILE (NAME = aBigTime, NEWNAME = " +
                //                        databaseName + "); ALTER DATABASE " + databaseName +
                //                        " MODIFY FILE (NAME = aBigTime_log, NEWNAME = " + databaseName + "_log);";

                //    _server.ConnectionContext.ExecuteNonQuery(strCommand);
                //}

                //update registry
                RegistryHelper.RemoveConnectionString();
                RegistryHelper.SetValueForRegistry("DatabaseName", txtDatabaseName.Text);
                RegistryHelper.SetValueForRegistry("DatabasePath", btnDatabasePath.Text + @"\");
                RegistryHelper.SaveConfigFile();

                //update options
                var message = _dbOptionsPresenter.Save();
                if (message != null)
                {
                    XtraMessageBox.Show(message, ResourceHelper.GetResourceValueByName("ResDetailContent"), MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    //update currency
                    _currencyPresenter.DisplayByCurrencyCode(cboCurrencyAccounting.EditValue == null ? null : cboCurrencyAccounting.EditValue.ToString());
                    if (CurrencyId != 0)
                    {
                        IsActive = true;
                        _currencyPresenter.Save();
                    }
                    _currencyPresenter.DisplayByCurrencyCode(cboCurrencyAccounting.EditValue == null ? null : cboCurrencyLocal.EditValue.ToString());
                    if (CurrencyId != 0)
                    {
                        IsActive = true;
                        _currencyPresenter.Save();
                    }
                    _currencyPresenter.DisplayByCurrencyCode(cboCurrencyAccounting.EditValue == null ? null : cboCurrencyCodeOfSalary.EditValue.ToString());
                    if (CurrencyId != 0)
                    {
                        IsActive = true;
                        _currencyPresenter.Save();
                    }
                    XtraMessageBox.Show(ResourceHelper.GetResourceValueByName("ResCreateDBSucces"), ResourceHelper.GetResourceValueByName("ResDetailContent"), MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

                //update account
                _accountPresenter.DisplayByAccountCode("11122");
                CurrencyCode = cboCurrencyLocal.EditValue.ToString().Trim();
                _accountPresenter.Save();

                _accountPresenter.DisplayByAccountCode("11222");
                CurrencyCode = cboCurrencyLocal.EditValue.ToString().Trim();
                _accountPresenter.Save();

                //update cac khoan luong
                LoadPayItem();
                if (cboCurrencyCodeOfSalary.EditValue.Equals("USD"))
                {
                    foreach (var payItem in _payItems)
                    {
                        _payItemPresenter.Display(payItem.PayItemId.ToString(CultureInfo.InvariantCulture));
                        CreditAccountCode = "11121";
                        _payItemPresenter.Save();
                    }
                }
                else
                {
                    foreach (var payItem in _payItems)
                    {
                        _payItemPresenter.Display(payItem.PayItemId.ToString(CultureInfo.InvariantCulture));
                        CreditAccountCode = "11122";
                        _payItemPresenter.Save();
                    }
                }

                LoadAutoBusiness();
                if (cboCurrencyLocal.EditValue != null && cboCurrencyAccounting.EditValue != null)
                {
                    var lstAutoBusinessByNotUSD = _autoAutoBusiness.Where(w => w.CurrencyCode != null && w.CurrencyCode != string.Empty && w.CurrencyCode != cboCurrencyAccounting.EditValue.ToString()).ToList();

                    foreach (var autoBusiness in lstAutoBusinessByNotUSD)
                    {
                        _autoBusinessPresenter.Display(autoBusiness.AutoBusinessId.ToString(CultureInfo.InvariantCulture));
                        CurrencyCode = cboCurrencyLocal.EditValue.ToString();
                        _autoBusinessPresenter.Save();
                    }
                }

                Cursor = Cursors.Default;
                System.Windows.Forms.Application.Restart();
            }
            catch (Exception ex)
            {
                Cursor = Cursors.Default;
                XtraMessageBox.Show(ex.ToString(),
                                    ResourceHelper.GetResourceValueByName("ResExceptionCaption"), MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemplo n.º 24
0
        /// <summary>
        /// 组件初始化
        /// </summary>
        /// <param name="option"></param>
        private void OptionComponent(Option option)
        {
            EChartsComponentTitle title = new EChartsComponentTitle {
                Text = "hello World", Subtext = "UglyMelon007"
            };

            option.Title = title;

            EChartsComponentTooltip tooltip = new EChartsComponentTooltip {
                Trigger = "axis"
            };

            option.Tooltip = tooltip;

            EChartsComponentLegend legend     = new EChartsComponentLegend();
            LegendData             legendData = new LegendData {
                Name = "最高温度"
            };

            legend.Data   = new[] { legendData };
            option.Legend = legend;

            EChartsComponentAxis xAxis = new EChartsComponentAxis {
                Type = "category", BoundaryGap = "false"
            };

            xAxis.Data = new[] {
                new AxisData {
                    Value = "Monday"
                },
                new AxisData {
                    Value = "Tuesday"
                },
                new AxisData {
                    Value = "Wednesday"
                },
                new AxisData {
                    Value = "Thursday"
                },
                new AxisData {
                    Value = "Friday"
                },
                new AxisData {
                    Value = "Saturday"
                },
                new AxisData {
                    Value = "Sunday"
                }
            };
            option.XAxis = xAxis;

            EChartsComponentAxis yAxis = new EChartsComponentAxis {
                Type = "value"
            };
            AxisLabel axisLabel = new AxisLabel {
                Formatter = "{value} °C"
            };

            yAxis.AxisLabel = axisLabel;
            option.YAxis    = yAxis;

            EChartsComponentToolbox toolbox = new EChartsComponentToolbox();

            toolbox.Show = "true";
            Feature feature = new Feature();
            Mark    mark    = new Mark {
                Show = "true"
            };
            DataView dataView = new DataView {
                Show = "true", ReadOnly = "false"
            };
            MagicType magicType = new MagicType {
                Show = "true", Type = new[] { "line", "bar" }
            };
            Restore restore = new Restore {
                Show = "true"
            };
            SaveAsImage saveAsImage = new SaveAsImage {
                Show = "true"
            };

            feature.Mark        = mark;
            feature.DataView    = dataView;
            feature.MagicType   = magicType;
            feature.Restore     = restore;
            feature.SaveAsImage = saveAsImage;
            toolbox.Feature     = feature;
            option.Toolbox      = toolbox;
        }
Exemplo n.º 25
0
        public void RestoreDB(string connectionString, string backupFile)
        {
            if (connectionString == null)
            {
                FailedToRestore($"ConnectionString is null.");
                // throw new ArgumentNullException($"ConnectionString  is null.");
            }

            if (backupFile == null)
            {
                FailedToRestore($"BackupFile is null.");
                // throw new ArgumentNullException($"BackupFile is null.");
            }

            if (string.IsNullOrEmpty(connectionString.Trim()) || string.IsNullOrEmpty(backupFile.Trim()))
            {
                FailedToRestore($"Either of the parameter is empty or having whitespace.");
                //throw new ArgumentNullException($"Either of the parameter is empty or whitespace.");
            }

            try
            {
                using (SqlConnection connection = new SqlConnection())
                {
                    //polish the connection string
                    connection.ConnectionString = connectionString;
                    _connection = new ServerConnection(connection);
                    _connection.StatementTimeout = ConnectionStatementTimeout;

                    _server = new Server(_connection);

                    string databaName = Path.GetFileNameWithoutExtension(backupFile);
                    Restore                 = new Restore();
                    Restore.Action          = RestoreActionType.Database;
                    Restore.Database        = databaName;
                    Restore.ReplaceDatabase = true;
                    Device = new BackupDeviceItem(backupFile, DeviceType.File);
                    Restore.Devices.Add(Device);

                    Database currentDb = _server.Databases[databaName];
                    if (currentDb != null)
                    {
                        KillDatabaseProcess(databaName);
                    }

                    //Restore DB
                    Restore.SqlRestore(_server);
                    RestoredSuccessfully();
                }
            }
            catch (InvalidOperationException ioex)
            {
                FailedToRestore(ioex.Message);
            }
            catch (Exception ex)
            {
                FailedToRestore(ex.Message);
            }
            finally
            {
                Device  = null;
                Restore = null;
            }
        }
Exemplo n.º 26
0
        public Response Task()
        {
            Response response    = new Response();
            string   dbBakFile   = _db.File.FullName;
            string   dbtoRestore = _db.DatabaseName;

            if (string.IsNullOrEmpty(dbBakFile) || !File.Exists(dbBakFile))
            {
                response.Status  = Response.ResponseMessage.Failed;
                response.Message = "No such .bak file found.";
                return(response);
            }

            var smoServer = _db.Server;

            var db = smoServer.Databases[dbtoRestore];

            if (db != null)
            {
                smoServer.KillAllProcesses(dbtoRestore);
                log.Debug("All processes on db killed");
                db.SetOffline();
            }

            string dataPath = UtilityConfig.GetMachineConfigValue("DataPath");
            string dbPath   = Path.Combine(dataPath, dbtoRestore + ".mdf");
            string logPath  = Path.Combine(dataPath, dbtoRestore + ".ldf");

            var restore    = new Restore();
            var deviceItem = new BackupDeviceItem(dbBakFile, DeviceType.File);

            restore.ReplaceDatabase             = true;
            restore.PercentCompleteNotification = 10;
            restore.PercentComplete            += restore_PercentComplete;
            restore.Complete += restore_Complete;

            try
            {
                restore.Devices.Add(deviceItem);
                if (db != null)
                {
                    DataTable dtFileList     = restore.ReadFileList(smoServer);
                    string    dbLogicalName  = dtFileList.Rows[0][0].ToString();
                    string    logLogicalName = dtFileList.Rows[1][0].ToString();
                    restore.RelocateFiles.Add(new RelocateFile(dbLogicalName, dbPath));
                    restore.RelocateFiles.Add(new RelocateFile(logLogicalName, logPath));
                }
                else
                {
                    Database  smoDatabase = new Database(smoServer, dbtoRestore);
                    FileGroup fg          = new FileGroup(smoDatabase, "PRIMARY");
                    smoDatabase.FileGroups.Add(fg);
                    DataFile df = new DataFile(fg, dbtoRestore, dbPath);
                    df.IsPrimaryFile = true;
                    fg.Files.Add(df);

                    LogFile lf = new LogFile(smoDatabase, dbtoRestore + "_log", logPath);
                    smoDatabase.LogFiles.Add(lf);
                    smoDatabase.Create();
                    smoServer.Refresh();
                    smoServer.KillAllProcesses(dbtoRestore);
                    log.Debug("All processes on db killed");
                    smoServer.Databases[dbtoRestore].SetOffline();
                    //restore.DatabaseFiles.Add(dbPath);
                    //restore.DatabaseFiles.Add(logPath);
                    DataTable dtFileList     = restore.ReadFileList(smoServer);
                    string    dbLogicalName  = dtFileList.Rows[0][0].ToString();
                    string    logLogicalName = dtFileList.Rows[1][0].ToString();
                    restore.RelocateFiles.Add(new RelocateFile(dbLogicalName, dbPath));
                    restore.RelocateFiles.Add(new RelocateFile(logLogicalName, logPath));
                }
                restore.Database   = dbtoRestore;
                restore.FileNumber = 1;
                restore.Action     = RestoreActionType.Files;
                restore.SqlRestore(smoServer);
                db = smoServer.Databases[dbtoRestore];
                db.SetOnline();
                smoServer.Refresh();
                db.Refresh();
            }
            catch (Exception ex)
            {
                // cleanup
                smoServer.Refresh();
                db = smoServer.Databases[dbtoRestore];

                if (db != null)
                {
                    db.Drop();
                }
                if (File.Exists(dbPath))
                {
                    File.Delete(dbPath);
                }
                if (File.Exists(logPath))
                {
                    File.Delete(dbPath);
                }

                response.Status  = Response.ResponseMessage.Failed;
                response.Message = ex.GetExceptionMessages();
                return(response);
            }

            response.Status  = Response.ResponseMessage.Succeeded;
            response.Message = string.Format("{0} file restored to database {1}.", _db.File.Name, dbtoRestore);
            return(response);
        }
Exemplo n.º 27
0
        public IDictionary <string, string> to_token_dictionary()
        {
            var tokens = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
            {
                { nameof(AfterMigrationFolderName), AfterMigrationFolderName.to_string() },
                { nameof(AlterDatabaseFolderName), AlterDatabaseFolderName.to_string() },
                { nameof(Baseline), Baseline.to_string() },
                { nameof(BeforeMigrationFolderName), BeforeMigrationFolderName.to_string() },
                { nameof(CommandTimeout), CommandTimeout.to_string() },
                { nameof(CommandTimeoutAdmin), CommandTimeoutAdmin.to_string() },
                { nameof(ConfigurationFile), ConfigurationFile.to_string() },
                { nameof(ConnectionString), ConnectionString.to_string() },
                { nameof(ConnectionStringAdmin), ConnectionStringAdmin.to_string() },
                { nameof(CreateDatabaseCustomScript), CreateDatabaseCustomScript.to_string() },
                { nameof(DatabaseName), DatabaseName.to_string() },
                { nameof(DatabaseType), DatabaseType.to_string() },
                { nameof(Debug), Debug.to_string() },
                { nameof(DisableOutput), DisableOutput.to_string() },
                { nameof(DisableTokenReplacement), DisableTokenReplacement.to_string() },
                { nameof(DoNotAlterDatabase), DoNotAlterDatabase.to_string() },
                { nameof(DoNotCreateDatabase), DoNotCreateDatabase.to_string() },
                { nameof(DoNotStoreScriptsRunText), DoNotStoreScriptsRunText.to_string() },
                { nameof(DownFolderName), DownFolderName.to_string() },
                { nameof(Drop), Drop.to_string() },
                { nameof(DryRun), DryRun.to_string() },
#pragma warning disable 618
                { nameof(EnvironmentName), string.Join(",", EnvironmentNames) },
#pragma warning restore 618
                { nameof(EnvironmentNames), string.Join(",", EnvironmentNames) },
                { nameof(FunctionsFolderName), FunctionsFolderName.to_string() },
                { nameof(IndexesFolderName), IndexesFolderName.to_string() },
                { nameof(Initialize), Initialize.to_string() },
                { nameof(OutputPath), OutputPath.to_string() },
                { nameof(PermissionsFolderName), PermissionsFolderName.to_string() },
                { nameof(RecoveryMode), RecoveryMode.to_string() },
                { nameof(RepositoryPath), RepositoryPath.to_string() },
                { nameof(Restore), Restore.to_string() },
                { nameof(RestoreCustomOptions), RestoreCustomOptions.to_string() },
                { nameof(RestoreFromPath), RestoreFromPath.to_string() },
                { nameof(RestoreTimeout), RestoreTimeout.to_string() },
                { nameof(RunAfterCreateDatabaseFolderName), RunAfterCreateDatabaseFolderName.to_string() },
                { nameof(RunAfterOtherAnyTimeScriptsFolderName), RunAfterOtherAnyTimeScriptsFolderName.to_string() },
                { nameof(RunAllAnyTimeScripts), RunAllAnyTimeScripts.to_string() },
                { nameof(RunBeforeUpFolderName), RunBeforeUpFolderName.to_string() },
                { nameof(RunFirstAfterUpFolderName), RunFirstAfterUpFolderName.to_string() },
                { nameof(SchemaName), SchemaName.to_string() },
                { nameof(ScriptsRunErrorsTableName), ScriptsRunErrorsTableName.to_string() },
                { nameof(ScriptsRunTableName), ScriptsRunTableName.to_string() },
                { nameof(SearchAllSubdirectoriesInsteadOfTraverse), SearchAllSubdirectoriesInsteadOfTraverse.to_string() },
                { nameof(ServerName), ServerName.to_string() },
                { nameof(Silent), Silent.to_string() },
                { nameof(SprocsFolderName), SprocsFolderName.to_string() },
                { nameof(SqlFilesDirectory), SqlFilesDirectory.to_string() },
                { nameof(TriggersFolderName), TriggersFolderName.to_string() },
                { nameof(UpFolderName), UpFolderName.to_string() },
                { nameof(Version), Version.to_string() },
                { nameof(VersionFile), VersionFile.to_string() },
                { nameof(VersionTableName), VersionTableName.to_string() },
                { nameof(VersionXPath), VersionXPath.to_string() },
                { nameof(ViewsFolderName), ViewsFolderName.to_string() },
                { nameof(WarnAndIgnoreOnOneTimeScriptChanges), WarnAndIgnoreOnOneTimeScriptChanges.to_string() },
                { nameof(WarnOnOneTimeScriptChanges), WarnOnOneTimeScriptChanges.to_string() },
                { nameof(WithTransaction), WithTransaction.to_string() },
            };

            if (UserTokens != null)
            {
                foreach (var t in UserTokens)
                {
                    tokens[t.Key] = t.Value;
                }
            }

            return(tokens);
        }
Exemplo n.º 28
0
 // Start is called before the first frame update
 void Start()
 {
     restoreScript = GetComponent <Restore>();
 }
        public void Restore(DatabaseRestoreRequest request, PercentCompleteEventHandler percentCompleteDelegate)
        {
            var server = new Server(request.TargetInstance);
            Database database = server.Databases[request.TargetDatabase];

            // Start by locking down the database
            database.DatabaseOptions.UserAccess = DatabaseUserAccess.Single;
            database.Alter(TerminationClause.RollbackTransactionsImmediately);

            var restoreDb = new Restore { Database = database.Name, Action = RestoreActionType.Database };

            //Specify whether you want to restore database or files or log etc
            restoreDb.Devices.AddDevice(request.FullBackupFile, DeviceType.File);

            // For now we only support database replacement.
            restoreDb.ReplaceDatabase = true;

            // For full backup no recovery is not usefull. Will need to to change this if support for restoring transactional backup file happens.
            restoreDb.NoRecovery = false;

            // Associate the correct physical path for each file to be restored
            foreach (FileToRestore fileToRestore in request.FilesLists)
            {
                restoreDb.RelocateFiles.Add(new RelocateFile(fileToRestore.BackupLogicalName,
                                                             fileToRestore.TargetPhysicalPath));
            }

            if (percentCompleteDelegate != null)
            {
                restoreDb.PercentComplete += percentCompleteDelegate;
            }

            // Magic!
            restoreDb.SqlRestore(server);

            restoreDb.SqlRestoreAsync(server);

            // After the restore, ensure the recovery model is set to simple.
            // Since we only support DEV/TEST/DEMO, we dont want the overhead of the other recovery models.
            database.RecoveryModel = RecoveryModel.Simple;
            database.Alter();

            string sqlConnectionString = string.Format("Integrated Security=SSPI;Persist Security Info=True;Initial Catalog={1};Data Source={0}", server.Name, database.Name);

            foreach (var script in request.ScriptsToExecute)
            {
                var fileInfo = new FileInfo(script);


                string sql;

                using (var text = fileInfo.OpenText())
                {
                    sql = text.ReadToEnd();
                    text.Close();
                }


                SqlConnection connection = new SqlConnection(sqlConnectionString);
                Server srv = new Server(new ServerConnection(connection));
                srv.ConnectionContext.SqlExecutionModes = SqlExecutionModes.ExecuteAndCaptureSql;
                srv.ConnectionContext.ExecuteNonQuery(sql);
            }

        }
Exemplo n.º 30
0
 /// <summary>
 /// Deletes a restore session
 /// </summary>
 /// <param name="session">
 /// The restore session to delete
 /// </param>
 public void DeleteRestore(Restore.Session session)
 {
     this.archive.RestoreIndex.DeleteSession(session);
 }
Exemplo n.º 31
0
 /// <summary>
 /// Prepares the archive for a new restore process and returns
 /// an object used to restore entries from the archive
 /// </summary>
 /// <param name="session">
 /// The new restore session
 /// </param>
 /// <returns>
 /// The archive restore implementation
 /// </returns>
 public IRestore PrepareRestore(Restore.Session session)
 {
     return new FileSystemRestore(this, session);
 }
    public static void RollBackDatabase(string databaseName, string bakfilePath)
    {
        SqlConnection.ClearAllPools();

        SqlConnection cnn = SetSingleUser(databaseName);
        ServerConnection serverConn = new ServerConnection(cnn);
        Server server = new Server(serverConn);

        Database db = server.Databases[cnn.Database];
        Restore restore = new Restore();
        restore.Action = RestoreActionType.Database;
        restore.Devices.AddDevice(bakfilePath, DeviceType.File);
        restore.Database = databaseName;
        restore.ReplaceDatabase = true;
        restore.Complete += new ServerMessageEventHandler(Restore_Completed);
        restore.PercentComplete += new PercentCompleteEventHandler(CompletionStatusInPercent);
        restore.PercentCompleteNotification = 10;

        SqlCommand cmd = cnn.CreateCommand();
        cmd.CommandText = string.Format("use master");
        cmd.ExecuteNonQuery();


        restore.SqlRestore(server);
        db = server.Databases[databaseName];
        db.SetOnline();
        server.Refresh();

        if (server.ConnectionContext.IsOpen)
            server.ConnectionContext.Disconnect();

    }
Exemplo n.º 33
0
        private void RollbackUpgrade(Server server, String databaseName)
        {
            if (backupFilePath != null)
            {
                Logger.DebugFormat("Restoring database from '{0}'.", backupFilePath);

                var db = server.Databases[databaseName];

                server.KillAllProcesses(databaseName);

                Restore restoreDB = new Restore();
                restoreDB.Database = databaseName;
                /* Specify whether you want to restore database, files or log */
                restoreDB.Action = RestoreActionType.Database;
                restoreDB.Devices.AddDevice(backupFilePath, DeviceType.File);

                restoreDB.ReplaceDatabase = true;
                restoreDB.NoRecovery = false;

                restoreDB.PercentComplete += restoreDB_PercentComplete;
                restoreDB.Complete += restoreDB_Complete;

                restoreDB.SqlRestore(server);
            }
        }
Exemplo n.º 34
0
 private static void Restore(string backupFileName, string destinationDbName, SqlConnection connection)
 {
     Contract.Ensures(File.Exists(backupFileName), "File.Exists(backupFileName)");
     var restoreDb = new Restore
     {
         Database = destinationDbName,
         Action = RestoreActionType.Database,
         ReplaceDatabase = true,
         NoRecovery = false
     };
     restoreDb.Devices.AddDevice(backupFileName, DeviceType.File);
     connection.Open();
     var server = new Server(new ServerConnection(connection));
     var relocateFiles = GetRelocateFiles(connection, backupFileName, destinationDbName, server.DefaultFile, server.DefaultLog);
     restoreDb.RelocateFiles.AddRange(relocateFiles);
     restoreDb.SqlRestore(server);
 }
Exemplo n.º 35
0
 private void OnRestore(object sender, EventArgs e)
 {
     Restore?.Invoke(sender, e);
 }
Exemplo n.º 36
0
 public void ValidateCanExecuteAbortRestore(IValueTag sender, ValueChangedEventArgs args)
 {
     Abort.ValidateCanExecute(sender, args);
     Restore.ValidateCanExecute(sender, args);
 }
Exemplo n.º 37
0
        public void DoDataBaseBackup()
        {
            string           connectionString = ConfigurationManager.ConnectionStrings["Test"].ToString();
            SqlConnection    connecton        = new SqlConnection(connectionString);
            ServerConnection serverConnection = new ServerConnection(connecton);
            Server           myServer         = new Server(serverConnection);

            //Using windows authentication
            myServer.ConnectionContext.Connect();

            Database myDatabase = myServer.Databases[ConfigurationManager.AppSettings["DatabaseNameToBackup"]];

            //Backup operation
            Backup bkpDBFull = new Backup();

            /* Specify whether you want to back up database or files or log */
            bkpDBFull.Action = BackupActionType.Database;

            /* Specify the name of the database to back up */
            bkpDBFull.Database = myDatabase.Name;

            /* You can take backup on several media type (disk or tape), here I am
             * using File type and storing backup on the file system */
            string destinationFolderForDatabase = ConfigurationManager.AppSettings["DestinationFolderForDatabase"];

            bkpDBFull.Devices.AddDevice(destinationFolderForDatabase, DeviceType.File);
            bkpDBFull.BackupSetName        = "Test database Backup";
            bkpDBFull.BackupSetDescription = "test database - Full Backup";


            /* You can specify the expiration date for your backup data
             * after that date backup data would not be relevant */
            bkpDBFull.ExpirationDate = DateTime.Today.AddDays(10);

            /* You can specify Initialize = false (default) to create a new
             * backup set which will be appended as last backup set on the media. You
             * can specify Initialize = true to make the backup as first set on the
             * medium and to overwrite any other existing backup sets if the all the
             * backup sets have expired and specified backup set name matches with
             * the name on the medium */
            bkpDBFull.Initialize = false;

            /* You can specify Incremental = false (default) to perform full backup or Incremental = true to perform differential backup since most recent full backup */
            bkpDBFull.Incremental = false;

            /* Wiring up events for progress monitoring */
            bkpDBFull.PercentComplete += CompletionStatusInPercent;
            bkpDBFull.Complete        += Backup_Completed;

            /* SqlBackup method starts to take back up
             * You can also use SqlBackupAsync method to perform the backup
             * operation asynchronously */
            bkpDBFull.SqlBackup(myServer);

            Restore restore = new Restore();

            restore.Devices.AddDevice(@"C:\Test.bak", DeviceType.File);
            restore.Database = "Test2012";
            Console.WriteLine(restore.SqlVerify(myServer).ToString());
            if (myServer.ConnectionContext.IsOpen)
            {
                myServer.ConnectionContext.Disconnect();
            }
        }
        public Task<string> RestoreAsync(DatabaseRestoreRequest request, PercentCompleteEventHandler percentCompleteDelegate)
        {



            var server = new Server(request.TargetInstance);
            Database database = server.Databases[request.TargetDatabase];

            // Start by locking down the database
            database.DatabaseOptions.UserAccess = DatabaseUserAccess.Single;
            database.Alter(TerminationClause.RollbackTransactionsImmediately);

            var restoreDb = new Restore { Database = database.Name, Action = RestoreActionType.Database };

            //Specify whether you want to restore database or files or log etc
            restoreDb.Devices.AddDevice(request.FullBackupFile, DeviceType.File);

            // For now we only support database replacement.
            restoreDb.ReplaceDatabase = true;

            // For full backup no recovery is not usefull. Will need to to change this if support for restoring transactional backup file happens.
            restoreDb.NoRecovery = false;

            // Associate the correct physical path for each file to be restored
            foreach (FileToRestore fileToRestore in request.FilesLists)
            {
                restoreDb.RelocateFiles.Add(new RelocateFile(fileToRestore.BackupLogicalName,
                                                             fileToRestore.TargetPhysicalPath));
            }

            if (percentCompleteDelegate != null)
            {
                restoreDb.PercentComplete += percentCompleteDelegate;
            }


            var tcs = new TaskCompletionSource<string>();


            //Handle the Complete event with a TaskCompletionSource that way when can control when the task is completed.
            restoreDb.Complete += (sender, e) => RestoreWasCompleted(tcs, e, request, database, server);

            try
            {
                // Start asynchrounos restore. That way the ThreadPool is not blocked,
                restoreDb.SqlRestoreAsync(server);
            }
            catch (Exception ex)
            {
                // An exception occured. notify the task
                tcs.TrySetException(ex);
            }

            return tcs.Task;
        }
Exemplo n.º 39
0
 /// <summary>
 /// Initializes a new restore instance
 /// </summary>
 /// <param name="archive">
 /// The file system archive for the restore
 /// </param>
 /// <param name="session">
 /// The restore session being processed
 /// </param>
 public FileSystemRestore(FileSystemArchive archive, Restore.Session session)
 {
     this.blobFile = IO.FileSystem.Open(archive.BlobPath);
 }
Exemplo n.º 40
0
        public bool RealizarRestoreBD(string rutaArchivo)
        {
            bool resultado = false;

            try
            {

                string baseDeDatos = ConfigurationManager.AppSettings["BaseDeDatos"].ToString();

                if (File.Exists(rutaArchivo))
                {

                    using (SqlConnection conexion = Conexion.ObtenerInstancia().CrearConexionSQLMaster())
                    {
                        ServerConnection conexionServer = new ServerConnection(conexion);
                        Server servidor = new Server(conexionServer);

                        Restore restoreBD = new Restore();
                        restoreBD.Action = RestoreActionType.Database;
                        restoreBD.Database = baseDeDatos;

                        String query = "ALTER DATABASE " + baseDeDatos + " SET SINGLE_USER WITH ROLLBACK IMMEDIATE";
                        using(SqlCommand comando = new SqlCommand(query, conexion))
                        {
                            comando.Connection.Open();
                            comando.ExecuteNonQuery();
                        }

                        BackupDeviceItem deviceItem = new BackupDeviceItem(rutaArchivo, DeviceType.File);
                        restoreBD.Devices.Add(deviceItem);
                        restoreBD.ReplaceDatabase = true;

                        restoreBD.SqlRestore(servidor);

                        conexionServer.Disconnect();
                    }

                    resultado = true;
                }

                return resultado;

            }
            catch (AccesoBDException ex)
            {
                throw new DALException("BDDAO", "RealizarRestoreBD", "AccesoBD", ex.Message, ex);
            }
            catch (SqlException ex)
            {
                throw new DALException("BDDAO", "RealizarRestoreBD", "SQL", ex.Message, ex);
            }
            catch (Exception ex)
            {
                throw new DALException("BDDAO", "RealizarRestoreBD", "General: " + ex.GetType().ToString(), ex.Message, ex);
            }
        }
Exemplo n.º 41
0
        private void VerifyBackup()
        {
            if (this.DataFilePath == null)
            {
                this.Log.LogError("DataFilePath is required");
                return;
            }

            if (!File.Exists(this.DataFilePath.GetMetadata("FullPath")))
            {
                this.Log.LogError(string.Format(CultureInfo.CurrentCulture, "DataFilePath not found: {0}", this.DataFilePath.GetMetadata("FullPath")));
                return;
            }

            this.LogTaskMessage(string.Format(CultureInfo.CurrentCulture, "Verifying Backup: {0}", this.DataFilePath.GetMetadata("FullPath")));
            Restore sqlRestore = new Restore();
            sqlRestore.Devices.AddDevice(this.DataFilePath.GetMetadata("FullPath"), DeviceType.File);
            string error;
            bool verified = sqlRestore.SqlVerify(this.sqlServer, out error);
            if (!verified)
            {
                this.Log.LogError(string.Format(CultureInfo.CurrentCulture, "Verification failed for: {0}. Error: {1}", this.DataFilePath.GetMetadata("FullPath"), error));
                return;
            }

            this.LogTaskMessage(string.Format(CultureInfo.CurrentCulture, "Backup successfully verified: {0}", this.DataFilePath.GetMetadata("FullPath")));
        }
Exemplo n.º 42
0
        public bool Create_DataBase(string db_nm, string restore_bak_up_nm)
        {
            DataSet dset = new DataSet();

            objIni.SetKeyFieldValue("SQL", "initial catalog", "master");
            ServerConnection con = new ServerConnection(objIni.GetKeyFieldValue("SQL", "data source"), objIni.GetKeyFieldValue("SQL", "user"), objIni.GetKeyFieldValue("SQL", "pwd"));//"INODE-SHA\\iMANTRA", "sa", "sa1985");
            bool             flg = true;

            try
            {
                #region comment
                string dbName         = db_nm;
                string backupFileName = AppDomain.CurrentDomain.BaseDirectory + @"DATABASE\" + restore_bak_up_nm + ".bak";
                Server server         = new Server(con);

                if (!server.Databases.Contains(dbName))
                {
                    Database database = new Database(server, db_nm);
                    database.FileGroups.Add(new FileGroup(database, "PRIMARY"));

                    DataFile dtPrimary = new DataFile(database.FileGroups["PRIMARY"], db_nm, AppDomain.CurrentDomain.BaseDirectory + @"DATABASE\" + db_nm + ".mdf".Trim());
                    dtPrimary.Size       = 77.0 * 1024.0;
                    dtPrimary.GrowthType = FileGrowthType.KB;
                    dtPrimary.Growth     = 1.0 * 1024.0;
                    database.FileGroups["PRIMARY"].Files.Add(dtPrimary);

                    LogFile logFile = new LogFile(database, db_nm + "_log", AppDomain.CurrentDomain.BaseDirectory + @"DATABASE\" + db_nm + ".ldf".Trim());
                    logFile.Size       = 7.0 * 1024.0;
                    logFile.GrowthType = FileGrowthType.Percent;
                    logFile.Growth     = 10.0;

                    database.LogFiles.Add(logFile);
                    database.Create();
                    database.Refresh();
                }


                SqlConnection  myConn = new SqlConnection(objIni.GetSectionDetails("SQL", ";"));//"data source=INODE-SHA\\iMANTRA;initial catalog=master;user=sa;pwd=sa1985");
                string         str    = "RESTORE FILELISTONLY FROM DISK = '" + backupFileName + "'";
                SqlDataAdapter cmd    = new SqlDataAdapter(str, myConn);
                myConn.Open();
                cmd.Fill(dset);

                Restore  restore   = new Restore();
                Database database1 = server.Databases[db_nm];
                restore.Database        = database1.Name;
                restore.ReplaceDatabase = true;
                restore.Action          = RestoreActionType.Database;
                restore.Devices.AddDevice(backupFileName, DeviceType.File);

                RelocateFile relocateDataFile = new RelocateFile(dset.Tables[0].Rows[0][0].ToString(), AppDomain.CurrentDomain.BaseDirectory + @"DATABASE\" + db_nm + ".mdf");
                RelocateFile relocateLogFile  = new RelocateFile(dset.Tables[0].Rows[1][0].ToString(), AppDomain.CurrentDomain.BaseDirectory + @"DATABASE\" + db_nm + ".ldf");

                restore.RelocateFiles.Add(relocateDataFile);
                restore.RelocateFiles.Add(relocateLogFile);

                restore.ReplaceDatabase             = true;
                restore.PercentCompleteNotification = 10;

                restore.PercentComplete += new PercentCompleteEventHandler(ProgressEventHandler);
                restore.SqlRestore(server);
                #endregion
            }
            catch (Exception ex)
            {
                flg = false;
                AutoClosingMessageBox.Show("Connection Error : " + ex.Message, "Error", 5000);
            }
            finally
            {
                con.Disconnect();
            }
            return(flg);
        }
Exemplo n.º 43
0
 private void SetupSut()
 {
     _mockDataStatementReader = new Mock <IDataStatementReader>();
     _runEnvironment          = new RunEnvironment();
     _sut = new Restore(_runEnvironment, _mockDataStatementReader.Object);
 }
Exemplo n.º 44
0
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            Restore rest = new Restore();
            string PathtobackUp ="";
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.InitialDirectory = "c:\\";
            dlg.Filter = "Backup Files (*.bak)|*.bak|All Files (*.*)|*.*";
            dlg.RestoreDirectory = true;
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                PathtobackUp = dlg.FileName.ToString();
            }
            else
            {
                return;
            }
            string fileName = PathtobackUp;

            //this.Cursor = Cursors.WaitCursor;
            //this.dataGridView1.DataSource = string.Empty;

            try
            {
                rest.Devices.AddDevice(fileName, DeviceType.File);
                Server srv = new Server("(localdb)\\v11.0");
                bool verifySuccessful = rest.SqlVerify(srv);
                string databaseName = "LoanManagement.Domain.finalContext";
                if (verifySuccessful)
                {
                    System.Windows.MessageBox.Show("Backup Verified!", "Info");
                    System.Windows.MessageBoxResult dr = System.Windows.MessageBox.Show("Do you want to restore?","Question",MessageBoxButton.YesNo);
                    if (dr == MessageBoxResult.Yes)
                    {
                        //fileName = dlg.FileName.Replace(Directory.GetCurrentDirectory(), "");
                        System.Windows.MessageBox.Show(fileName);
                        rest.Database = databaseName;
                        rest.Action = RestoreActionType.Database;
                        BackupDeviceItem bdi = default(BackupDeviceItem);
                        bdi = new BackupDeviceItem(fileName, DeviceType.File);
                        rest.Devices.Add(bdi);
                        //rest.Devices.Add(bdi);
                        rest.ReplaceDatabase = true;
                        srv = new Server("(localdb)\\v11.0");
                        rest.SqlRestore(srv);
                        srv.Refresh();
                        System.Windows.MessageBox.Show("Restore of " + databaseName +" Complete!");
                    }
                }
                else
                {
                    System.Windows.MessageBox.Show("ERROR: Backup not verified!", "Error");
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show("The system has been successfully restored");
            }
            finally
            {
                //this.Cursor = Cursors.Default;
            }
        }
Exemplo n.º 45
0
        public IDictionary <string, string> to_token_dictionary()
        {
            var tokens = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);

            tokens["AccessToken"] = AccessToken.to_string();
            tokens["AfterMigrationFolderName"] = AfterMigrationFolderName.to_string();
            tokens["AlterDatabaseFolderName"]  = AlterDatabaseFolderName.to_string();
            tokens["Baseline"] = Baseline.to_string();
            tokens["BeforeMigrationFolderName"]  = BeforeMigrationFolderName.to_string();
            tokens["CommandTimeout"]             = CommandTimeout.to_string();
            tokens["CommandTimeoutAdmin"]        = CommandTimeoutAdmin.to_string();
            tokens["ConfigurationFile"]          = ConfigurationFile.to_string();
            tokens["ConnectionString"]           = ConnectionString.to_string();
            tokens["ConnectionStringAdmin"]      = ConnectionStringAdmin.to_string();
            tokens["CreateDatabaseCustomScript"] = CreateDatabaseCustomScript.to_string();
            tokens["DatabaseName"]             = DatabaseName.to_string();
            tokens["DatabaseType"]             = DatabaseType.to_string();
            tokens["Debug"]                    = Debug.to_string();
            tokens["DisableOutput"]            = DisableOutput.to_string();
            tokens["DisableTokenReplacement"]  = DisableTokenReplacement.to_string();
            tokens["DoNotAlterDatabase"]       = DoNotAlterDatabase.to_string();
            tokens["DoNotCreateDatabase"]      = DoNotCreateDatabase.to_string();
            tokens["DoNotStoreScriptsRunText"] = DoNotStoreScriptsRunText.to_string();
            tokens["DownFolderName"]           = DownFolderName.to_string();
            tokens["Drop"]                                     = Drop.to_string();
            tokens["DryRun"]                                   = DryRun.to_string();
            tokens["EnvironmentName"]                          = string.Join(",", EnvironmentNames);
            tokens["EnvironmentNames"]                         = string.Join(",", EnvironmentNames);
            tokens["FunctionsFolderName"]                      = FunctionsFolderName.to_string();
            tokens["IndexesFolderName"]                        = IndexesFolderName.to_string();
            tokens["Initialize"]                               = Initialize.to_string();
            tokens["OutputPath"]                               = OutputPath.to_string();
            tokens["PermissionsFolderName"]                    = PermissionsFolderName.to_string();
            tokens["RecoveryMode"]                             = RecoveryMode.to_string();
            tokens["RepositoryPath"]                           = RepositoryPath.to_string();
            tokens["Restore"]                                  = Restore.to_string();
            tokens["RestoreCustomOptions"]                     = RestoreCustomOptions.to_string();
            tokens["RestoreFromPath"]                          = RestoreFromPath.to_string();
            tokens["RestoreTimeout"]                           = RestoreTimeout.to_string();
            tokens["RunAfterCreateDatabaseFolderName"]         = RunAfterCreateDatabaseFolderName.to_string();
            tokens["RunAfterOtherAnyTimeScriptsFolderName"]    = RunAfterOtherAnyTimeScriptsFolderName.to_string();
            tokens["RunAllAnyTimeScripts"]                     = RunAllAnyTimeScripts.to_string();
            tokens["RunBeforeUpFolderName"]                    = RunBeforeUpFolderName.to_string();
            tokens["RunFirstAfterUpFolderName"]                = RunFirstAfterUpFolderName.to_string();
            tokens["SchemaName"]                               = SchemaName.to_string();
            tokens["ScriptsRunErrorsTableName"]                = ScriptsRunErrorsTableName.to_string();
            tokens["ScriptsRunTableName"]                      = ScriptsRunTableName.to_string();
            tokens["SearchAllSubdirectoriesInsteadOfTraverse"] = SearchAllSubdirectoriesInsteadOfTraverse.to_string();
            tokens["ServerName"]                               = ServerName.to_string();
            tokens["Silent"]                                   = Silent.to_string();
            tokens["SprocsFolderName"]                         = SprocsFolderName.to_string();
            tokens["SqlFilesDirectory"]                        = SqlFilesDirectory.to_string();
            tokens["TriggersFolderName"]                       = TriggersFolderName.to_string();
            tokens["UpFolderName"]                             = UpFolderName.to_string();
            tokens["Version"]                                  = Version.to_string();
            tokens["VersionFile"]                              = VersionFile.to_string();
            tokens["VersionTableName"]                         = VersionTableName.to_string();
            tokens["VersionXPath"]                             = VersionXPath.to_string();
            tokens["ViewsFolderName"]                          = ViewsFolderName.to_string();
            tokens["WarnAndIgnoreOnOneTimeScriptChanges"]      = WarnAndIgnoreOnOneTimeScriptChanges.to_string();
            tokens["WarnOnOneTimeScriptChanges"]               = WarnOnOneTimeScriptChanges.to_string();
            tokens["WithTransaction"]                          = WithTransaction.to_string();

            if (UserTokens != null)
            {
                foreach (var t in UserTokens)
                {
                    tokens[t.Key] = t.Value;
                }
            }

            return(tokens);
        }
Exemplo n.º 46
0
 /// <summary>
 /// Retrieves an entry from the archive
 /// </summary>
 /// <param name="entry">
 /// The restore entry to retrieve
 /// </param>
 /// <returns>
 /// A sub-stream of the blob file containing the entry's data
 /// </returns>
 public Stream Restore(Restore.Entry entry)
 {
     return new IO.Substream(this.blobFile, entry.Offset, entry.Length);
 }
Exemplo n.º 47
0
        public void Restore(string backupFile, string DatabaseName)
        {
            Microsoft.SqlServer.Management.Common.ServerConnection connection;

            Console.WriteLine(string.Format("Connecting to SQL server {0}", Server));

            // Initialize our common objects
            connection = new Microsoft.SqlServer.Management.Common.ServerConnection(Server);
            smoServer  = new Server(connection);
            database   = smoServer.Databases[DatabaseName];
            if (false && database == null)
            {
                // Invalid database name.
                Console.WriteLine(string.Format("Invalid database '{1}' on server '{0}'.", Server, DatabaseName));
                foreach (Database db in smoServer.Databases)
                {
                    Console.WriteLine(string.Format("Available database: '{1}' on server '{0}'.", Server, db.Name));
                }
                throw new Exception(string.Format("Invalid database '{1}' on server '{0}'.", Server, DatabaseName));
            }


            Restore restore = new Restore();

            restore.Action   = RestoreActionType.Database;
            restore.Database = DatabaseName;

            restore.Devices.AddDevice(backupFile, DeviceType.File);

            restore.ReplaceDatabase = true;

            RelocateFile DataFile = new RelocateFile();
            var          fileList = restore.ReadFileList(smoServer);
            string       MDF      = fileList.Rows[0][1].ToString();

            DataFile.LogicalFileName  = restore.ReadFileList(smoServer).Rows[0][0].ToString();
            DataFile.PhysicalFileName = smoServer.Databases[DatabaseName].FileGroups[0].Files[0].FileName;

            RelocateFile LogFile = new RelocateFile();
            string       LDF     = restore.ReadFileList(smoServer).Rows[1][1].ToString();

            LogFile.LogicalFileName  = restore.ReadFileList(smoServer).Rows[1][0].ToString();
            LogFile.PhysicalFileName = smoServer.Databases[DatabaseName].LogFiles[0].FileName;

            restore.RelocateFiles.Add(DataFile);
            restore.RelocateFiles.Add(LogFile);

            // Kill all connections on the database.
            if (database != null)
            {
                Console.WriteLine(string.Format("Deleting database {0}.", DatabaseName));
                smoServer.KillDatabase(DatabaseName);
                //context.TrackBuildMessage("Killing all processes");
                //smoServer.KillAllProcesses(database.Name);
                //context.TrackBuildMessage("Setting single-user mode");
                //database.DatabaseOptions.UserAccess = DatabaseUserAccess.Single;
                //database.Alter(TerminationClause.RollbackTransactionsImmediately);

                //context.TrackBuildMessage("Detatching database");
                //smoServer.DetachDatabase(DatabaseName.Get(context), false);
            }

            // Set some status update event handlers.
            restore.PercentCompleteNotification = 10; // Send updates every 10%
            restore.PercentComplete            += new PercentCompleteEventHandler(RestoreProgressEventHandler);

            Console.WriteLine("Restoring");
            restore.SqlRestore(smoServer);
        }
Exemplo n.º 48
0
        private void Restore()
        {
            if (this.DatabaseItem == null)
            {
                this.Log.LogError("DatabaseItem is required");
                return;
            }

            if (this.ReplaceDatabase && this.LogFilePath == null)
            {
                this.Log.LogError("LogFilePath must be specified if ReplaceDatabase is true.");
                return;
            }

            string primaryDataFileName = (!string.IsNullOrEmpty(this.PrimaryDataFileName)) ? this.PrimaryDataFileName : this.DatabaseItem.ItemSpec;
            this.LogTaskMessage(string.Format(CultureInfo.CurrentCulture, "Restoring SQL {2}: {0} from {1}", this.DatabaseItem.ItemSpec, this.DataFilePath.GetMetadata("FullPath"), this.RestoreAction));
            Restore sqlRestore = new Restore { Database = this.DatabaseItem.ItemSpec, Action = this.restoreAction, PercentCompleteNotification = this.NotificationInterval, ReplaceDatabase = this.ReplaceDatabase };
            sqlRestore.Devices.AddDevice(this.DataFilePath.GetMetadata("FullPath"), DeviceType.File);
            sqlRestore.PercentComplete += this.ProgressEventHandler;

            if (string.IsNullOrEmpty(this.LogName))
            {
                this.LogName = primaryDataFileName + "_log";
            }

            // add primary data file
            sqlRestore.RelocateFiles.Add(new RelocateFile(primaryDataFileName, (this.NewDataFilePath != null) ? this.NewDataFilePath.GetMetadata("FullPath") : this.DataFilePath.GetMetadata("FullPath")));

            // add log file, if path provided
            if (this.LogFilePath != null)
            {
                sqlRestore.RelocateFiles.Add(new RelocateFile(this.LogName, this.LogFilePath.GetMetadata("FullPath")));
            }

            // add secondary data file, if name and path provided
            if (!string.IsNullOrEmpty(this.SecondaryDataFileName) && this.SecondaryDataFilePath != null)
            {
                sqlRestore.RelocateFiles.Add(new RelocateFile(this.SecondaryDataFileName, this.SecondaryDataFilePath.GetMetadata("FullPath")));
            }

            sqlRestore.SqlRestore(this.sqlServer);
        }
Exemplo n.º 49
0
        private void btnRestore_Click(object sender, RoutedEventArgs e)
        {
            string blankDBFile          = string.Empty;
            string dbScriptsDefaultPath = string.Empty;
            string backupFileName       = string.Empty;
            string sSQLServerDetails    = string.Empty;
            bool   bDBExists            = false;

            try
            {
                Cursor = System.Windows.Input.Cursors.Wait;

                sSQLServerDetails = GetConnectionString();
                bDBExists         = DBSettings.CheckDBExists(sSQLServerDetails, txtDataBases.Text, 60);

                if (bDBExists == true)
                {
                    MessageBox.ShowText(string.Format("{0} {1}", txtDataBases.Text, FindResource("MessageID50")), BMC_Icon.Information);
                    LogManager.WriteLog(string.Format("{0} {1}", txtDataBases.Text, FindResource("MessageID50")), LogManager.enumLogLevel.Info);
                }
                else
                {
                    dbScriptsDefaultPath = ConfigurationManager.AppSettings.Get("DBScriptsDefaultPath");

                    if (this.strType.ToUpper() == "EXCHANGE")
                    {
                        blankDBFile = ConfigurationManager.AppSettings.Get("ExchangeBlankDB");
                    }
                    if (this.strType.ToUpper() == "TICKETING")
                    {
                        blankDBFile = ConfigurationManager.AppSettings.Get("TicketingBlankDB");
                    }
                    if (this.strType.ToUpper() == "EXTSYSMSG")
                    {
                        blankDBFile = ConfigurationManager.AppSettings.Get("EXTSYSMSGBlankDB");
                    }

                    backupFileName = string.Format("{0}\\{1}", dbScriptsDefaultPath, blankDBFile);

                    // Create a new connection to the Server
                    ServerConnection serverConnection = new ServerConnection(cmbServers.SelectedItem.ToString());

                    // Log in using SQL authentication instead of Windows authentication
                    serverConnection.LoginSecure = false;

                    // Give the login username
                    serverConnection.Login = txtUsername.Text;

                    // Give the login password
                    serverConnection.Password = txtPassword.Password;

                    // Create a new SQL Server object using the connection we created
                    Server server = new Server(serverConnection);

                    // Create a new database restore operation
                    Restore rstDatabase = new Restore();

                    // Set the restore type to a database restore
                    rstDatabase.Action = RestoreActionType.Database;

                    // Set the database that we want to perform the restore on
                    rstDatabase.Database = txtDataBases.Text;

                    // Set the backup device from which we want to restore the db
                    BackupDeviceItem bkpDevice = new BackupDeviceItem(backupFileName, DeviceType.File);

                    // Add the backup device to the restore type
                    rstDatabase.Devices.Add(bkpDevice);

                    // Optional. ReplaceDatabase property ensures that any existing copy of the database is overwritten.
                    rstDatabase.ReplaceDatabase = true;

                    // Perform the restore
                    rstDatabase.SqlRestore(server);

                    LogManager.WriteLog(string.Format("{0} - {1}", "Database Restore Complete. Running Updgrade Scripts for database", txtDataBases.Text), LogManager.enumLogLevel.Info);

                    if (this.strType.ToUpper() == "EXCHANGE" | this.strType.ToUpper() == "TICKETING")
                    {
                        if (Convert.ToBoolean(ConfigurationManager.AppSettings.Get("AutoRunUpgradeScriptAfterDBRestore")))
                        {
                            try
                            {
                                RunDatabaseUpgradeScripts();
                            }
                            catch (Exception ex)
                            {
                                ExceptionManager.Publish(ex);

                                if (this.strType.ToUpper() == "EXCHANGE")
                                {
                                    MessageBox.ShowBox("MessageID106", BMC_Icon.Error);
                                }
                                if (this.strType.ToUpper() == "TICKETING")
                                {
                                    MessageBox.ShowBox("MessageID107", BMC_Icon.Error);
                                }
                            }
                        }

                        LogManager.WriteLog(string.Format("{0} - {1}", "Updgrade Scripts run successfully for database", txtDataBases.Text), LogManager.enumLogLevel.Info);
                    }

                    MessageBox.ShowText(string.Format("{0} {1} {2}.", FindResource("MessageID53"), txtDataBases.Text, FindResource("MessageID54")), BMC_Icon.Information);
                }
            }
            catch (Exception ex)
            {
                MessageBox.ShowBox("MessageID74", BMC_Icon.Error);
                ExceptionManager.Publish(ex);
            }
            finally
            {
                btnRestore.IsEnabled = true;
                Cursor = System.Windows.Input.Cursors.Arrow;
            }
        }