public void AlterDatabase() { var dbconn = this.FindDatabaseConnection(ConnPack); if (!AlterDatabaseVisible() || dbconn == null) { return; } var dbmem = new DatabaseStructureMembers(); dbmem.DatabaseOptions = true; var m_db = dbconn.InvokeLoadStructure(dbmem, null); var props = new DatabaseProperties { Name = dbconn.DatabaseName, SpecificData = m_db.SpecificData, }; if (DatabasePropertiesForm.Run(props, dbconn, true)) { var plan = new AlterPlan(); var opts = new DbDiffOptions(); plan.ChangeDatabaseOptions(dbconn.DatabaseName, props.SpecificData); plan.Transform(dbconn.Dialect.DumperCaps, opts, dbconn); string alterSql = dbconn.Dialect.GenerateScript(dmp => plan.CreateRunner().Run(dmp, opts)); if (SqlConfirmForm.Run(alterSql)) { dbconn.AlterDatabase(plan, opts); } } }
//private void selectTemplateComboFrame1_ChangedSelectedItem(object sender, EventArgs e) //{ // RecreateBackupFormat(); //} //private void RecreateBackupFormat() //{ // AddonHolder item = selectTemplateComboFrame1.SelectedAddonHolder; // if (item != null) m_format = (IBackupFormat)item.CreateInstance(); // else m_format = new DataArchiveBackupFormat(); // propertyFrame1.SelectedObject = m_format; //} private void InitPropertiesPage() { try { Async.SafeOpen(m_source.Connection); DatabaseStructureMembers dbmem = new DatabaseStructureMembers { TableList = true, SpecificObjectList = true, SchemaList = true, IgnoreSystemObjects = true, }; IDatabaseStructure dbs = m_source.InvokeLoadStructure(dbmem, null); if (m_chooseNode == null) { m_chooseNode = new DbDefChooseTreeNode(dbs); treObjects.Root = m_chooseNode; } } catch (Exception err) { Errors.Report(err); wizard1.Back(); } }
private void DoRefreshTables() { var dbmem = new DatabaseStructureMembers { TableList = true }; dbmem.SpecificObjectOverride["view"] = new SpecificObjectMembers(); dbmem.SpecificObjectOverride["view"].ObjectList = true; var dbs = Connection.Dialect.AnalyseDatabase(Connection, null, dbmem, null); m_availableTableNames = new List <NameWithSchema>(); foreach (var ts in dbs.Tables) { m_availableTableNames.Add(ts.FullName); } m_availableTableNames.Sort(); m_availableViewNames = new List <NameWithSchema>(); if (dbs.SpecificObjects.ContainsKey("view")) { foreach (var ts in dbs.SpecificObjects["view"]) { m_availableViewNames.Add(ts.ObjectName); } } m_availableViewNames.Sort(); }
public ITableStructure LoadTable(FullDatabaseRelatedName tname) { if (tname.ObjectType == "table") { var dbmem = new DatabaseStructureMembers { TableMembers = TableStructureMembers.All, TableFilter = new List <NameWithSchema> { tname.ObjectName } }; var dbs = Connection.InvokeLoadStructure(null, dbmem, null); return(dbs.Tables[tname.ObjectName]); } if (tname.ObjectType == "view") { var dbmem = new DatabaseStructureMembers { ViewAsTables = true, ViewAsTableFilter = new List <NameWithSchema> { tname.ObjectName } }; var dbs = Connection.InvokeLoadStructure(null, dbmem, null); return(dbs.ViewAsTables[tname.ObjectName]); } throw new NotImplementedError("DAE-00370"); }
public void GenerateDropAllTables(IDatabaseSource conn, ISqlDumper dmp, ISqlDialect dialect) { DatabaseStructureMembers dbmem = new DatabaseStructureMembers { TableList = true, TableMembers = TableStructureMembers.ForeignKeys, IgnoreSystemObjects = true, }; var dbs = new DatabaseStructure(conn.InvokeLoadStructure(dbmem, null)); IMigrationProfile profile = dialect.CreateMigrationProfile(); dialect.MigrateDatabase(dbs, profile, null); foreach (ITableStructure tbl in dbs.Tables) { if (conn.Dialect.IsSystemTable(tbl.FullName)) { continue; } foreach (IForeignKey fk in tbl.GetConstraints <IForeignKey>()) { dmp.DropConstraint(fk); } } foreach (ITableStructure tbl in dbs.Tables) { if (conn.Dialect.IsSystemTable(tbl.FullName)) { continue; } dmp.DropTable(tbl, DropFlags.None); } }
public void CreateAllObjects(IDatabaseSource conn, ISqlDumper dmp, ISqlDialect dialect) { var dbmem = new DatabaseStructureMembers { TableList = true, TableMembers = TableStructureMembers.AllNoRefs, DomainList = true, DomainDetails = true, SpecificObjectList = true, SpecificObjectDetails = true, LoadDependencies = true, IgnoreSystemObjects = true, }; var dbs = new DatabaseStructure(conn.InvokeLoadStructure(dbmem, null)); var props = new CreateDatabaseObjectsProps { CreateDomains = Domains, CreateFixedData = FixedData, CreateSchemata = Schemata, CreateSpecificObjects = SpecificObjects, CreateTables = Tables }; IMigrationProfile profile = dialect.CreateMigrationProfile(); dialect.MigrateDatabase(dbs, profile, null); dmp.CreateDatabaseObjects(dbs, props); }
public override void LoadFromXml(XmlElement xml) { base.LoadFromXml(xml); m_format = (IBackupFormat)BackupFormatAddonType.Instance.LoadAddon(xml.FindElement("Format")); m_members = new DatabaseStructureMembers(); m_members.LoadFromXml_ForJob(xml.FindElement("Members")); m_src = (IDatabaseSource)DatabaseSourceAddonType.Instance.LoadAddon(xml.FindElement("Source")); }
public void GetMembers(DatabaseStructureMembers dbmem) { if (RealNode.NodeChecked) { dbmem.DomainList = true; dbmem.DomainDetails = true; } }
public static List <string> SchemaNames(Func <DatabaseStructureMembers, IDatabaseStructure> loadFunc) { DatabaseStructureMembers dbmem = new DatabaseStructureMembers { SchemaList = true }; IDatabaseStructure dbs = loadFunc(dbmem); return(new List <string>(from s in dbs.Schemata select s.SchemaName)); }
public DatabaseStructureMembers Clone() { DatabaseStructureMembers res = (DatabaseStructureMembers)MemberwiseClone(); if (TableFilter != null) { res.TableFilter = new List <NameWithSchema>(TableFilter); } res.SpecificObjectOverride = new Dictionary <string, SpecificObjectMembers>(); res.SpecificObjectOverride.AddAllMapped(SpecificObjectOverride, m => m.Clone()); return(res); }
public void LoadFromXml(XmlElement xml) { CopyMembers = new DatabaseStructureMembers(); CopyMembers.LoadFromXml_ForJob(xml.FindElement("Members")); TableOptions = new TableCopyOptions(); TableOptions.LoadFromXml(xml.FindElement("TableOptions")); foreach (XmlElement tbl in xml.SelectNodes("DataCopyTables/Table")) { DataCopyTables.Add(NameWithSchema.LoadFromXml(tbl)); } this.LoadPropertiesCore(xml); }
public static ISpecificObjectStructure LoadSpecificObjectDetail(this IDatabaseSource db, string type, NameWithSchema objname) { DatabaseStructureMembers dbmem = new DatabaseStructureMembers(); dbmem.SpecificObjectOverride[type] = new SpecificObjectMembers(); dbmem.SpecificObjectOverride[type].ObjectDetail = true; dbmem.SpecificObjectOverride[type].ObjectFilter = new List <NameWithSchema> { objname }; IDatabaseStructure dbs = db.LoadDatabaseStructure(dbmem, null); return(dbs.SpecificObjects[type][objname]); }
public static ITableStructure InvokeLoadViewStructure(this IDatabaseSource conn, NameWithSchema name) { DatabaseStructureMembers dbmem = new DatabaseStructureMembers { ViewAsTables = true, ViewAsTableFilter = new List <NameWithSchema> { name }, }; IDatabaseStructure dbs = conn.InvokeLoadStructure(dbmem, null); return(dbs.ViewAsTables[name]); }
public static ITableStructure InvokeLoadTableStructure(this IDatabaseSource conn, NameWithSchema name, TableStructureMembers members) { DatabaseStructureMembers dbmem = new DatabaseStructureMembers { TableFilter = new List <NameWithSchema> { name }, TableMembers = members }; IDatabaseStructure dbs = conn.InvokeLoadStructure(dbmem, null); return(dbs.Tables[name]); }
public void CreateReferences(IDatabaseSource conn, ISqlDumper dmp, ISqlDialect dialect) { var dbmem = new DatabaseStructureMembers { TableList = true, TableMembers = TableStructureMembers.AllNoRefs, IgnoreSystemObjects = true, }; var dbs = new DatabaseStructure(conn.InvokeLoadStructure(dbmem, null)); IMigrationProfile profile = dialect.CreateMigrationProfile(); dialect.MigrateDatabase(dbs, profile, null); CreateReferences(dmp, dbs); }
protected override void DoGetChildren() { var dbmem = new DatabaseStructureMembers(); dbmem.SchemaDetails = dbmem.SchemaList = true; IDatabaseStructure dbs = m_conn.LoadDatabaseStructure(dbmem, null); List <ITreeNode> res = new List <ITreeNode>(); foreach (var schema in dbs.Schemata.Sorted()) { res.Add(new Schema_TreeNode(schema, m_conn, this)); } m_children = res.ToArray(); }
private void WantStructure() { Async.SafeOpen(m_source.Connection); DatabaseStructureMembers dbmem = new DatabaseStructureMembers { TableList = true, DomainList = true, SpecificObjectList = true, SchemaList = true, IgnoreSystemObjects = true, }; m_structure = m_source.InvokeLoadStructure(dbmem, null); }
public DatabaseStructureMembers GetChoosedMembers() { DatabaseStructureMembers res = new DatabaseStructureMembers(); foreach (var node in GetChildren()) { var tnode = node as IMembersHolderNode; if (tnode != null) { tnode.GetMembers(res); } } res.LoadDependencies = true; return(res); }
ITableStructure DoGetRowFormat() { if (m_rowFormat == null) { DatabaseStructureMembers dbmem = new DatabaseStructureMembers { TableFilter = new List <NameWithSchema> { new NameWithSchema(m_schema, m_tblname) }, TableMembers = TableStructureMembers.Columns, }; m_rowFormat = m_conn.Dialect.AnalyseDatabase(m_conn, m_dbname, dbmem, null).Tables[new NameWithSchema(m_schema, m_tblname)]; } return(m_rowFormat); }
public void CreateDomains(IDatabaseSource conn, ISqlDumper dmp, ISqlDialect dialect) { var dbmem = new DatabaseStructureMembers { DomainDetails = true, DomainList = true, IgnoreSystemObjects = true, }; var dbs = new DatabaseStructure(conn.InvokeLoadStructure(dbmem, null)); IMigrationProfile profile = dialect.CreateMigrationProfile(); dialect.MigrateDatabase(dbs, profile, null); CreateDomains(dmp, dbs); }
public override void GetObjectList(List <AppObject> objs, AppObject appobj, ConnectionPack connpack) { ObjectPath objpath = appobj.GetObjectPath(); IDatabaseSource conn = appobj.FindDatabaseConnection(connpack); if (conn != null && conn.Connection.IsOpened) { var dbmem = new DatabaseStructureMembers(); dbmem.IgnoreSystemObjects = true; if (_Type.ObjectType == "table") { dbmem.TableList = true; } else { var smem = new SpecificObjectMembers { ObjectList = true }; dbmem.SpecificObjectOverride[_Type.ObjectType] = smem; } var dbs = conn.InvokeLoadStructure(dbmem, null); if (_Type.ObjectType == "table") { foreach (var tbl in dbs.Tables) { var o = new TableAppObject(); o.FillFromDatabase(conn); o.DbObjectName = tbl.FullName; objs.Add(o); } } else { if (dbs.SpecificObjects.ContainsKey(_Type.ObjectType)) { foreach (var spec in dbs.SpecificObjects[_Type.ObjectType]) { var o = new SpecificObjectAppObject(); o.FillFromDatabase(conn); o.DbObjectName = spec.ObjectName; o.DbObjectType = _Type.ObjectType; objs.Add(o); } } } } objs.SortByKey(o => o.ToString()); }
public void FillAllTables(IDatabaseSource conn, ISqlDumper dmp, ISqlDialect dialect) { var dbmem = new DatabaseStructureMembers { TableList = true, TableMembers = TableStructureMembers.Columns, }; var dbs = new DatabaseStructure(conn.InvokeLoadStructure(dbmem, null)); IMigrationProfile profile = dialect.CreateMigrationProfile(); dialect.MigrateDatabase(dbs, profile, null); foreach (var tbl in dbs.Tables) { GenerateFillTable(tbl, dmp); } }
/// <summary> /// creates deep copy of database structure and filters database members /// </summary> /// <param name="src"></param> /// <param name="dbmem"></param> public DatabaseStructure(IDatabaseStructure src, DatabaseStructureMembers dbmem) : base(src) { Initialize(); Dialect = src.Dialect; ForceSingleSchema = src.ForceSingleSchema; foreach (ITableStructure o in src.Tables) { if (dbmem == null || dbmem.HasTableDetails(o.FullName)) { Tables.Add(new TableStructure(o)); } } foreach (ISchemaStructure o in src.Schemata) { Schemata.Add(new SchemaStructure(o)); } foreach (ICollationStructure o in src.Collations) { Collations.Add(new CollationStructure(o)); } foreach (ICharacterSetStructure o in src.CharacterSets) { CharacterSets.Add(new CharacterSetStructure(o)); } foreach (IDomainStructure o in src.Domains) { Domains.Add(new DomainStructure(o)); } foreach (string objtype in src.SpecificObjects.Keys) { var col = new SpecificObjectCollection(this); SpecificObjects[objtype] = col; foreach (ISpecificObjectStructure o in src.SpecificObjects[objtype]) { if (dbmem == null || dbmem.HasSpecificObjectDetails(objtype, o.ObjectName)) { col.Add(new SpecificObjectStructure(o)); } } } //FilledMembers = dbmem ?? src.FilledMembers.Clone(); }
public void GetMembers(DatabaseStructureMembers dbmem) { if (RealNode.NodeChecked) { dbmem.TableList = true; dbmem.TableMembers = TableStructureMembers.AllNoRefs; if (!RealNode.CheckedAllChildren()) { dbmem.TableFilter = new List <NameWithSchema>(); foreach (var child in RealNode.RealChildren) { if (child.NodeChecked) { dbmem.TableFilter.Add(((DbDefChooseTableTreeNode)child.LogicalNode).m_table.FullName); } } } } }
public override void LoadDatabase(IDatabaseSource dst) { var writer = new DatabaseSourceWriter(dst); var reader = new DataArchiveReader(Filename); var dbmem = new DatabaseStructureMembers { TableMembers = TableStructureMembers.AllNoRefs, SpecificObjectDetails = true, }; var copyOpts = new DatabaseCopyOptions { CopyMembers = dbmem, DataMode = DbCopyDataMode.All, CopyStructure = true, SchemaMode = DbCopySchemaMode.Original, }; CopyDbJob.CopyDatabase(reader, writer, ProgressInfo, copyOpts); }
public void GetMembers(DatabaseStructureMembers dbmem) { if (RealNode.NodeChecked) { var mem = new SpecificObjectMembers(); dbmem.SpecificObjectOverride[m_repr.ObjectType] = mem; mem.ObjectDetail = true; mem.ObjectList = true; if (!RealNode.CheckedAllChildren()) { mem.ObjectFilter = new List <NameWithSchema>(); foreach (var child in RealNode.RealChildren) { if (child.NodeChecked) { mem.ObjectFilter.Add(((DbDefChooseSpecObjectTreeNode)child.LogicalNode).m_obj.ObjectName); } } } } }
public DatabaseStructure Run(ISqlDialect dialect, IPhysicalConnection conn, string dbname, DatabaseStructureMembers members, IProgressInfo progress) { AnalyserCache = conn.Cache.GetAnalyserCache(dbname); m_conn = conn; //m_serverVersion = m_dbConn.ServerVersion; //ParseVersion(); m_dialect = dialect; m_members = members; m_dbname = dbname; m_progress = progress; m_db.Dialect = m_dialect; m_definedSpecs = m_dialect.GetSpecificTypes(); PrepareMembers(); SetCurWork(Texts.Get("s_loading_tables")); LoadDomains(); LoadTableList(); LoadTableColumns(); LoadConstraints(); LoadIndexes(); AfterLoadIndexesOrConstraints(); InternalAfterLoadConstraints(); MarkFilledTableMembers(); LoadSchemata(); LoadCharacterSets(); LoadCollations(); SetCurWork(Texts.Get("s_loading_objects")); LoadSpecificObjects(); LoadDatabaseOptions(); LoadViewsAsTables(); LoadDependencies(); return(m_db); }
//public static IEnumerable<NameWithSchema> GetSpecificObjectList(this IDatabaseSource db, string type, ObjectPath parent) //{ // if (parent.ObjectName != null) throw new Exception("Only database objects are supported"); // return db.GetSpecificObjectList(type, parent.DbName); //} public static IEnumerable <NameWithSchema> LoadSpecificObjectList(this IDatabaseSource db, string type, bool isSystem) { DatabaseStructureMembers dbmem = new DatabaseStructureMembers(); dbmem.SpecificObjectOverride[type] = new SpecificObjectMembers(); dbmem.SpecificObjectOverride[type].ObjectList = true; IDatabaseStructure dbs = db.LoadDatabaseStructure(dbmem, null); if (!dbs.SpecificObjects.ContainsKey(type)) { yield break; } foreach (var obj in dbs.SpecificObjects[type]) { bool objsys; try { objsys = db.Dialect.IsSystemObject(type, obj.ObjectName); } catch { objsys = false; } if (objsys != isSystem) { continue; } yield return(obj.ObjectName); } }
public BackupDbJobCommand(IDatabaseSource src, IBackupFormat format, DatabaseStructureMembers members) { m_src = src; m_format = format; m_members = members; }
public static Job CreateJob(IDatabaseSource src, IBackupFormat format, DatabaseStructureMembers members, JobProperties jobProps) { return(Job.FromCommand(new BackupDbJobCommand(src, format, members), jobProps)); }