コード例 #1
0
        public static void GetSupporableDatabaseSchemaVersionRange(ITopologyConfigurationSession taskSession, Task.TaskVerboseLoggingDelegate writeLog, Task.TaskWarningLoggingDelegate writeWarning, Task.TaskErrorLoggingDelegate writeError, Database database, out int minVersion, out int maxVersion, out int currentRequestedVersion)
        {
            currentRequestedVersion = 0;
            int num  = int.MaxValue;
            int num2 = 0;
            DatabaseAvailabilityGroup databaseAvailabilityGroup;

            using (IClusterDB clusterDB = DatabaseTasksHelper.OpenClusterDatabase(taskSession, writeLog, writeWarning, writeError, database, false, out databaseAvailabilityGroup))
            {
                if (clusterDB != null && clusterDB.IsInitialized)
                {
                    ClusterDBHelpers.ReadRequestedDatabaseSchemaVersion(clusterDB, database.Guid, 0, out currentRequestedVersion);
                    foreach (ADObjectId adobjectId in databaseAvailabilityGroup.Servers)
                    {
                        int num3;
                        int num4;
                        ClusterDBHelpers.ReadServerDatabaseSchemaVersionRange(clusterDB, adobjectId.ObjectGuid, 121, 121, out num3, out num4);
                        writeLog(Strings.ServerSchemaVersionRange(adobjectId.ObjectGuid.ToString(), num3, num4));
                        num2 = Math.Max(num3, num2);
                        num  = Math.Min(num4, num);
                    }
                }
            }
            if (num2 > num)
            {
                writeError(new IncompatibleDatabaseSchemaVersionsInDAGException(), ErrorCategory.MetadataError, database);
            }
            minVersion = num2;
            maxVersion = num;
        }
コード例 #2
0
        protected override void InternalValidate()
        {
            TaskLogger.LogEnter();
            base.InternalValidate();
            Server server = this.DataObject.GetServer();
            bool   flag   = false;

            if (server == null)
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorDBOwningServerNotFound(this.DataObject.Identity.ToString())), ErrorCategory.InvalidOperation, this.DataObject.Identity);
            }
            else
            {
                flag = server.IsE15OrLater;
            }
            if (!flag)
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorModifyE14DatabaseNotAllowed), ErrorCategory.InvalidOperation, this.DataObject.Identity);
            }
            DatabaseAvailabilityGroup databaseAvailabilityGroup;

            using (IClusterDB clusterDB = DatabaseTasksHelper.OpenClusterDatabase((ITopologyConfigurationSession)base.DataSession, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new Task.TaskErrorLoggingDelegate(base.WriteError), this.DataObject, false, out databaseAvailabilityGroup))
            {
                if (clusterDB == null || !clusterDB.IsInstalled)
                {
                    base.WriteError(new InvalidOperationException(Strings.ErrorSchemaVersionDoesntApply(this.DataObject.Name)), ErrorCategory.InvalidOperation, this.DataObject.Identity);
                }
            }
            if (base.Fields.IsModified("MajorVersion"))
            {
                this.version = UpdateDatabaseSchema.VersionFromComponents(this.MajorVersion, this.MinorVersion);
                int num;
                int num2;
                int num3;
                DatabaseTasksHelper.GetSupporableDatabaseSchemaVersionRange((ITopologyConfigurationSession)base.DataSession, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new Task.TaskErrorLoggingDelegate(base.WriteError), this.DataObject, out num, out num2, out num3);
                if (this.version < num || this.version > num2)
                {
                    base.WriteError(new InvalidOperationException(Strings.ErrorSchemaVersionOutOfRange(UpdateDatabaseSchema.VersionString(num), UpdateDatabaseSchema.VersionString(num2))), ErrorCategory.InvalidOperation, this.DataObject.Identity);
                }
                if (num3 > this.version)
                {
                    this.WriteWarning(Strings.RequestedVersionIsLowerThanCurrentVersion(num3));
                }
            }
            else
            {
                this.version = DatabaseTasksHelper.GetMaximumSupportedDatabaseSchemaVersion((ITopologyConfigurationSession)base.DataSession, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new Task.TaskErrorLoggingDelegate(base.WriteError), this.DataObject);
            }
            TaskLogger.LogExit();
        }
コード例 #3
0
 public static void RemoveDatabaseFromClusterDB(ITopologyConfigurationSession taskSession, Task.TaskVerboseLoggingDelegate writeLog, Task.TaskWarningLoggingDelegate writeWarning, Task.TaskErrorLoggingDelegate writeError, Database database)
 {
     try
     {
         DatabaseAvailabilityGroup databaseAvailabilityGroup;
         using (IClusterDB clusterDB = DatabaseTasksHelper.OpenClusterDatabase(taskSession, writeLog, writeWarning, writeError, database, true, out databaseAvailabilityGroup))
         {
             if (clusterDB != null && clusterDB.IsInitialized)
             {
                 writeLog(Strings.DeleteClusterDBKey(database.Name));
                 ClusterDBHelpers.RemoveDatabaseRequestedSchemaVersion(clusterDB, database.Guid);
             }
         }
     }
     catch (ClusterException)
     {
         writeWarning(Strings.FailedToRemoveDatabaseSection(database.Name));
     }
 }
コード例 #4
0
 public static void SetRequestedDatabaseSchemaVersion(ITopologyConfigurationSession taskSession, Task.TaskVerboseLoggingDelegate writeLog, Task.TaskWarningLoggingDelegate writeWarning, Task.TaskErrorLoggingDelegate writeError, Database database, int version)
 {
     try
     {
         DatabaseAvailabilityGroup databaseAvailabilityGroup;
         using (IClusterDB clusterDB = DatabaseTasksHelper.OpenClusterDatabase(taskSession, writeLog, writeWarning, writeError, database, false, out databaseAvailabilityGroup))
         {
             if (clusterDB != null && clusterDB.IsInitialized)
             {
                 writeLog(Strings.SetDatabaseRequestedSchemaVersion(database.Name, version));
                 ClusterDBHelpers.WriteRequestedDatabaseSchemaVersion(clusterDB, database.Guid, version);
             }
         }
     }
     catch (ClusterException)
     {
         if (writeError != null)
         {
             writeError(new FailedToSetRequestedDatabaseSchemaVersionException(database.Name), ErrorCategory.WriteError, database);
         }
     }
 }