예제 #1
0
        /// <summary>
        /// Checks existence and validity of the public database...
        /// </summary>
        public static void Execute(string connectionString, int commandTimeout, int maxDegreeOfParallelism, Pipelines pipelineOptions)
        {
            _log.Debug("Checking existence and validity of public database");

            // Check that db is the current version...

            var md  = new MetaDataSchema(connectionString, commandTimeout, maxDegreeOfParallelism, pipelineOptions);
            int ver = md.GetDatabaseVersion();

            _log.DebugFormat("Public database version = {0}", ver);

            if (ver > 0 && ver != MetaDataSchema.LatestPublicDbVersion)
            {
                throw new ApplicationException($"Public database version = {ver}, expecting {MetaDataSchema.LatestPublicDbVersion}");
            }

            _log.Debug("Public database version is correct");
        }
예제 #2
0
        public void CheckIdenticalAppKey(Guid adminAppKey)
        {
            if (DatabaseUtils.DatabaseExists(PublicConnectionString, Timeouts.PublicDatabase))
            {
                var tables = DatabaseUtils.GetTablesInSchema(
                    PublicConnectionString, Timeouts.PublicDatabase, false, MetaDataSchema.MetadataSchemaName);

                if (tables.Any())
                {
                    MetaDataSchema mdSchema = new MetaDataSchema(
                        PublicConnectionString, Timeouts.PublicDatabase, _configuration.MaxDegreeOfParallelism, _configuration.Pipelines);

                    Guid existingAppKey = mdSchema.GetApplicationKey();
                    if (existingAppKey != adminAppKey)
                    {
                        throw new ApplicationException(
                                  $"Application key in Public database ({DatabaseUtils.GetConnectionDescription(PublicConnectionString)}) is not the same as that in the Admin database ({DatabaseUtils.GetConnectionDescription(AdminConnectionString)})");
                    }
                }
            }
        }
예제 #3
0
        private static void CreateMetaDataTables(Guid appKey, string connectionString, int timeout, int maxDegreeOfParallelism, Pipelines pipelineOptions)
        {
            MetaDataSchema md = new MetaDataSchema(connectionString, timeout, maxDegreeOfParallelism, pipelineOptions);

            md.CreateTables(appKey);
        }