예제 #1
0
        public static void WriteServerDatabaseSchemaVersionRange(IClusterDB iClusterDB, Guid serverGuid, int minVersion, int maxVersion)
        {
            string registryKey = string.Format("Exchange\\Servers\\{0}\\Schema", serverGuid);

            using (IClusterDBWriteBatch clusterDBWriteBatch = iClusterDB.CreateWriteBatch(registryKey))
            {
                clusterDBWriteBatch.SetValue("Minimum Version", minVersion);
                clusterDBWriteBatch.SetValue("Maximum Version", maxVersion);
                clusterDBWriteBatch.Execute();
            }
        }
예제 #2
0
        // Token: 0x060000B3 RID: 179 RVA: 0x000052F4 File Offset: 0x000034F4
        private void PopulateBatch(IClusterDBWriteBatch writeBatch, Dictionary <AmServerName, AmCachedLastLogUpdater.ServerRequestInfo> requestInfoMap)
        {
            Dictionary <Guid, AmDbStateInfo> dbStateInfoMap = new Dictionary <Guid, AmDbStateInfo>();
            AmConfig config = AmSystemManager.Instance.Config;

            if (!config.IsPAM)
            {
                throw new AmInvalidConfiguration(string.Format("Role = {0}", config.Role));
            }
            AmDbStateInfo[] array = config.DbState.ReadAll();
            if (array != null)
            {
                dbStateInfoMap = array.ToDictionary((AmDbStateInfo s) => s.DatabaseGuid);
            }
            foreach (AmCachedLastLogUpdater.ServerRequestInfo serverRequestInfo in requestInfoMap.Values)
            {
                AmServerName            serverName        = serverRequestInfo.ServerName;
                Dictionary <Guid, long> databaseLogGenMap = serverRequestInfo.DatabaseLogGenMap;
                HashSet <Guid>          databasesByServer = this.GetDatabasesByServer(serverName);
                string value = serverRequestInfo.MostRecentRequestReceivedUtc.ToString("s");
                foreach (KeyValuePair <Guid, long> keyValuePair in databaseLogGenMap)
                {
                    Guid   key       = keyValuePair.Key;
                    long   value2    = keyValuePair.Value;
                    string text      = key.ToString();
                    string valueName = AmDbState.ConstructLastLogTimeStampProperty(text);
                    if (this.IsDatabaseActiveOnServer(dbStateInfoMap, key, serverName))
                    {
                        writeBatch.SetValue(text, value2.ToString());
                        writeBatch.SetValue(valueName, value);
                    }
                    databasesByServer.Remove(key);
                }
                foreach (Guid databaseGuid in databasesByServer)
                {
                    string valueName2 = AmDbState.ConstructLastLogTimeStampProperty(databaseGuid.ToString());
                    if (this.IsDatabaseActiveOnServer(dbStateInfoMap, databaseGuid, serverName))
                    {
                        writeBatch.SetValue(valueName2, value);
                    }
                }
                writeBatch.SetValue(serverName.NetbiosName, value);
            }
        }
예제 #3
0
        public static void WriteRequestedDatabaseSchemaVersion(IClusterDB iClusterDB, Guid databaseGuid, int requestedVersion)
        {
            string registryKey = string.Format("Exchange\\Databases\\{0}\\Schema", databaseGuid);

            using (IClusterDBWriteBatch clusterDBWriteBatch = iClusterDB.CreateWriteBatch(registryKey))
            {
                clusterDBWriteBatch.SetValue("Requested Version", requestedVersion);
                clusterDBWriteBatch.Execute();
            }
        }