Example #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;
        }
Example #2
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));
     }
 }
Example #3
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);
         }
     }
 }