public List <DatabaseInstance> GenerateDatabaseInstances(ServerInstance[][] serverInstances, string namePattern, string databaseNamePattern, double sizeFactor, bool generateFileGroups) { List <DatabaseInstance> instances = new List <DatabaseInstance>(); databaseDefinition.LoadDatabaseVersions(false); databaseDefinition.LoadSlices(false); List <Slice> slices = new List <Slice>(databaseDefinition.Slices.Values.OrderBy(i => i.Number)); for (int si = 0; si < slices.Count; si++) { Slice slice = slices[si]; // **** TODO review this part and add [$Number] to pattern if mirrored // to avoid name collision under databaseinstance foreach (DatabaseVersion rs in databaseDefinition.DatabaseVersions.Values) { // TODO: do not use rs.Number here!!! DatabaseInstance ndi = GenerateDatabaseInstance(serverInstances[si][rs.Number], slices[si], rs, namePattern, databaseNamePattern, sizeFactor, generateFileGroups); instances.Add(ndi); } } return(instances); }
private void GetServerSettings(schema::DatasetBase ds, out string connectionString, out DbProviderFactory dbf) { EntityFactory ef = new EntityFactory(RegistryContext); Entity db = ef.LoadEntity(EntityType.Unknown, Jhu.Graywulf.Registry.AppSettings.FederationName, ds.Name); if (StringComparer.InvariantCultureIgnoreCase.Compare(ds.Name, MyDBDatabaseDefinition.Name) == 0) { // In case of myDB connectionString = ((schema::SqlServer.SqlServerDataset)SchemaManager.Datasets[MyDBDatabaseDefinition.Name]).ConnectionString; dbf = DbProviderFactories.GetFactory(ds.ProviderName); } else if (db is DatabaseDefinition) { // In case of a Graywulf database definition DatabaseDefinition dd = (DatabaseDefinition)db; dd.LoadDatabaseVersions(false); DatabaseVersion rs = dd.DatabaseVersions.Values.First(r => r.Name == "HOT"); // ***** TODO: this should come from the job settings... dd.LoadDatabaseInstances(false); List <DatabaseInstance> dis = new List <DatabaseInstance>(dd.DatabaseInstances.Values.Where(dii => dii.DatabaseVersionReference.Guid == rs.Guid)); // Pick a random server Random rnd = new Random(); DatabaseInstance di = dis[rnd.Next(dis.Count)]; connectionString = di.GetConnectionString().ConnectionString; dbf = System.Data.SqlClient.SqlClientFactory.Instance; } else if (db is RemoteDatabase) { RemoteDatabase rd = (RemoteDatabase)db; connectionString = ds.GetSpecializedConnectionString(rd.ConnectionString, rd.IntegratedSecurity, rd.Username, rd.Password, false); dbf = DbProviderFactories.GetFactory(ds.ProviderName); } else { throw new InvalidOperationException(); } }
private void GenerateCodeDBDefinition(ServerVersion nodeServerVersion) { DatabaseDefinition codedbdd = new DatabaseDefinition(federation) { Name = Constants.CodeDbName, System = federation.System, LayoutType = DatabaseLayoutType.Mirrored, DatabaseInstanceNamePattern = Constants.CodeDbInstanceNamePattern, DatabaseNamePattern = Constants.CodeDbNamePattern, SliceCount = 1, PartitionCount = 1, }; codedbdd.Save(); var codedbddi = new DatabaseDefinitionInstaller(codedbdd); codedbddi.GenerateDefaultChildren(nodeServerVersion, Constants.CodeDbName); codedbdd.LoadDatabaseVersions(true); federation.CodeDatabaseVersion = codedbdd.DatabaseVersions[Constants.CodeDbName]; }
private void GenerateMyDBDefinition(ServerVersion myDbServerVersion) { DatabaseDefinition mydbdd = new DatabaseDefinition(federation) { Name = Constants.MyDbName, System = federation.System, LayoutType = DatabaseLayoutType.Monolithic, DatabaseInstanceNamePattern = Constants.MyDbInstanceNamePattern, DatabaseNamePattern = Constants.MyDbNamePattern, SliceCount = 1, PartitionCount = 1, }; mydbdd.Save(); var mydbddi = new DatabaseDefinitionInstaller(mydbdd); mydbddi.GenerateDefaultChildren(myDbServerVersion, Constants.MyDbName); mydbdd.LoadDatabaseVersions(true); federation.MyDBDatabaseVersion = mydbdd.DatabaseVersions[Constants.MyDbName]; }
protected void Page_Load(object sender, EventArgs e) { item = new DatabaseDefinition(RegistryContext); item.Guid = new Guid(Request.QueryString["guid"]); item.Load(); item.LoadDatabaseVersions(false); databaseVersions = new List <DatabaseVersion>(item.DatabaseVersions.Values); if (!IsPostBack) { RefreshDatabaseVersionList(); } // Load currently selected database version databaseVersion = new DatabaseVersion(RegistryContext); databaseVersion.Guid = new Guid(databaseVersionList.SelectedValue); databaseVersion.Load(); // Load server instances EntityFactory ef = new EntityFactory(RegistryContext); serverInstances = new List <ServerInstance>(ef.FindAll <ServerInstance>() .Where(i => i.ServerVersionReference.Guid == databaseVersion.ServerVersionReference.Guid) .OrderBy(i => i.Machine.Number)); // Load slices item.LoadSlices(false); slices = new List <Slice>(item.Slices.Values); if (!IsPostBack) { UpdateForm(); } GenerateTable(); }