Пример #1
0
        protected override OrganizationBackupRuntimeData ExecuteInternal(OrganizationBackupRuntimeData runtimeData, Guid orgId, Guid backupId, Guid queueItemId)
        {
            Exceptions.ThrowIfNullOrEmpty(runtimeData.RestoreSqlServerName, "runtimeData.RestoreSqlServerName");
            Exceptions.ThrowIfNullOrEmpty(runtimeData.RestoredDBName, "runtimeData.RestoredDBName");

            try
            {
                // drop restored db
                SqlUtility.DropDatabase(runtimeData.RestoreSqlServerName, runtimeData.RestoredDBName);
            }
            catch (SqlException ex)
            {
                // error 3701: database not found. If database is not found, we don't need to do anything.
                // Re-throw the exception for other type of exceptions, so executor can retry
                if (ex.Number != 3701)
                {
                    throw;
                }
            }

            // update restore sql server name and restored db name
            runtimeData.RestoreSqlServerName = null;        // clear restore sql server name
            runtimeData.RestoredDBName       = null;        // clear restore db name
            UpdateRuntimeData(queueItemId, runtimeData);

            return(runtimeData);
        }