예제 #1
0
        /// <summary>
        /// Set backup input properties
        /// </summary>
        /// <param name="input"></param>
        public void SetBackupInput(BackupInfo input)
        {
            this.backupInfo = input;

            // convert the types
            this.backupComponent  = (BackupComponent)input.BackupComponent;
            this.backupType       = (BackupType)input.BackupType;
            this.backupDeviceType = (BackupDeviceType)input.BackupDeviceType;

            if (this.backupRestoreUtil.IsHADRDatabase(this.backupInfo.DatabaseName))
            {
                this.isLocalPrimaryReplica = this.backupRestoreUtil.IsLocalPrimaryReplica(this.backupInfo.DatabaseName);
            }
        }
        public ArrayList GetBackupSetPhysicalSources(int backupsetId)
        {
            SqlExecutionModes executionMode = this.sqlConnection.SqlExecutionModes;

            this.sqlConnection.SqlExecutionModes = SqlExecutionModes.ExecuteSql;

            ArrayList sources   = new ArrayList();
            DataSet   backupSet = GetBackupSetById(backupsetId);

            if (backupSet.Tables[0].Rows.Count == 1)
            {
                string mediaSetID = Convert.ToString(backupSet.Tables[0].Rows[0]["MediaSetId"], System.Globalization.CultureInfo.InvariantCulture);

                Enumerator en          = new Enumerator();
                Request    req         = new Request();
                DataSet    mediafamily = new DataSet();
                mediafamily.Locale = System.Globalization.CultureInfo.InvariantCulture;

                req.Urn     = "Server/BackupMediaSet[@ID='" + Urn.EscapeString(mediaSetID) + "']/MediaFamily";
                mediafamily = en.Process(this.sqlConnection, req);

                if (mediafamily.Tables[0].Rows.Count > 0)
                {
                    for (int j = 0; j < mediafamily.Tables[0].Rows.Count; j++)
                    {
                        RestoreItemSource itemSource = new RestoreItemSource();
                        itemSource.RestoreItemLocation = Convert.ToString(mediafamily.Tables[0].Rows[j]["PhysicalDeviceName"], System.Globalization.CultureInfo.InvariantCulture);
                        BackupDeviceType backupDeviceType = (BackupDeviceType)Enum.Parse(typeof(BackupDeviceType), mediafamily.Tables[0].Rows[j]["BackupDeviceType"].ToString());

                        if (BackupDeviceType.Disk == backupDeviceType)
                        {
                            itemSource.RestoreItemDeviceType = DeviceType.File;
                        }
                        else if (BackupDeviceType.Url == backupDeviceType)
                        {
                            itemSource.RestoreItemDeviceType = DeviceType.Url;
                        }
                        else
                        {
                            itemSource.RestoreItemDeviceType = DeviceType.Tape;
                        }
                        sources.Add(itemSource);
                    }
                }
            }

            this.sqlConnection.SqlExecutionModes = executionMode;
            return(sources);
        }
        public BackupDeviceType GetPhisycalDeviceTypeOfLogicalDevice(string deviceName)
        {
            Enumerator enumerator = new Enumerator();
            Request    request    = new Request();
            DataSet    dataset    = new DataSet();

            dataset.Locale = System.Globalization.CultureInfo.InvariantCulture;
            request.Urn    = "Server/BackupDevice[@Name='" + Urn.EscapeString(deviceName) + "']";
            dataset        = enumerator.Process(this.sqlConnection, request);

            if (dataset.Tables[0].Rows.Count > 0)
            {
                BackupDeviceType controllerType = (BackupDeviceType)(Convert.ToInt16(dataset.Tables[0].Rows[0]["BackupDeviceType"], System.Globalization.CultureInfo.InvariantCulture));
                return(controllerType);
            }
            else
            {
                throw new Exception("Unexpected error");
            }
        }