private void EnsureAdminDatabaseExists(Guid adminAppKey) { int timeout = Timeouts.PublicDatabase; string connectionString = PublicConnectionString; if (!DatabaseUtils.DatabaseExists(connectionString, timeout)) { PublicDatabaseCreation.Execute( adminAppKey, connectionString, timeout, _configuration.MaxDegreeOfParallelism, _configuration.Pipelines); } else { var tables = DatabaseUtils.GetTablesInSchema( connectionString, timeout, false, MetaDataSchema.MetadataSchemaName); if (!tables.Any()) { // database exists, but no tables in the METADATA schema! // In this case we try to generate just the database objects associated with // the Public database (we assume _all_ tables and schemas are missing)... PublicDatabaseCreation.CreatePublicDatabaseObjects( adminAppKey, connectionString, timeout, _configuration.MaxDegreeOfParallelism, _configuration.Pipelines); } } }
private void EnsureAdminDatabaseExists() { var timeout = Timeouts.AdminDatabase; if (!DatabaseUtils.DatabaseExists(AdminConnectionString, timeout)) { _applicationKey = AdminDatabaseCreation.Execute(AdminConnectionString, timeout, _configuration.MaxDegreeOfParallelism, _configuration.Pipelines); } else { var tables = DatabaseUtils.GetTablesInSchema(AdminConnectionString, timeout, false, ControlSchema.ControlSchemaName); if (!tables.Any()) { // database exists, but no tables in the CONTROL schema! // The user may have created the database and pointed Verto at it, // or we might have created the database on Azure and the create database // statement timed out (but the database was still created). // In this case we try to generate just the database objects associated with // the Admin database (we assume _all_ tables and schemas are missing)... _applicationKey = AdminDatabaseCreation.CreateAdminDatabaseObjects( AdminConnectionString, timeout, _configuration.MaxDegreeOfParallelism, _configuration.Pipelines); } } }
public bool ConsolidationConfigChanged(ConsolidationParams c) { if (DatabaseUtils.DatabaseExists(AdminConnectionString, Timeouts.AdminDatabase)) { var fs = new FederationSchema( AdminConnectionString, Timeouts.AdminDatabase, _configuration.MaxDegreeOfParallelism, _configuration.Pipelines); if (fs.ConsolidationConfigTableExists()) { return(fs.ConsolidationConfigChanged(c)); } } return(false); }
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)})"); } } } }
/// <summary> /// Gets the application Guid - a value that ties Admin and Public databases /// together as part of the same application. /// </summary> /// <returns></returns> public Guid GetApplicationKey() { var result = Guid.Empty; if (DatabaseUtils.DatabaseExists(ConnectionString, TimeoutSecs) && DatabaseUtils.TableExists(ConnectionString, TimeoutSecs, ConfigTableName, SchemaName)) { _log.Debug("Getting application key guid"); var sql = $"select app_key from {GetQualifiedTableName(ConfigTableName)}"; var r = DatabaseUtils.ExecuteScalar(ConnectionString, sql, TimeoutSecs); if (r != null && r != DBNull.Value) { result = (Guid)r; } _log.DebugFormat("Application key guid = {0}", result.ToString()); } return(result); }
public bool TablesExist() { return (DatabaseUtils.DatabaseExists(PublicConnectionString, Timeouts.PublicDatabase) && DatabaseUtils.TableExists(PublicConnectionString, Timeouts.PublicDatabase, "TIMETABLE_CONFIG", "MISC")); }
public bool DatabaseExists() { return(DatabaseUtils.DatabaseExists(_connectionString, _timeoutSecs)); }