///-------------------------------------------------------------------------------- /// <summary>This loads information from a SqlServer database, using SMO.</summary> /// /// <param name="sqlDatabase">The input sql database</param> ///-------------------------------------------------------------------------------- public void LoadSqlServerDatabase(Database sqlDatabase) { try { // load the basic database information SqlDatabaseName = sqlDatabase.Name; DbID = sqlDatabase.ID; Owner = sqlDatabase.Owner; try { PrimaryFilePath = sqlDatabase.PrimaryFilePath; DefaultFileGroup = sqlDatabase.DefaultFileGroup; DefaultFullTextCatalog = sqlDatabase.DefaultFullTextCatalog; } catch { // TODO: have specific Azure db load or identify Azure case } DefaultSchema = sqlDatabase.DefaultSchema; CreateDate = sqlDatabase.CreateDate; Status = sqlDatabase.Status.ToString(); UserName = sqlDatabase.UserName; State = sqlDatabase.State.ToString(); // load information for each property foreach (Microsoft.SqlServer.Management.Smo.Property loopProperty in sqlDatabase.Properties) { if (DebugHelper.DebugAction == DebugAction.Stop) { return; } if (loopProperty.Expensive == false && loopProperty.IsNull == false && !String.IsNullOrEmpty(loopProperty.Value.ToString())) { SqlProperty property = new SqlProperty(); property.SqlPropertyID = Guid.NewGuid(); property.SqlDatabase = this; property.LoadProperty(loopProperty); SqlPropertyList.Add(property); } } try { // load information for each extended property foreach (ExtendedProperty loopProperty in sqlDatabase.ExtendedProperties) { if (DebugHelper.DebugAction == DebugAction.Stop) { return; } SqlExtendedProperty property = new SqlExtendedProperty(); property.SqlExtendedPropertyID = Guid.NewGuid(); property.SqlDatabase = this; property.LoadExtendedProperty(loopProperty); SqlExtendedPropertyList.Add(property); } } catch { // TODO: have specific Azure db load or identify Azure case } // load information for each table foreach (Table loopTable in sqlDatabase.Tables) { if (loopTable.IsSystemObject == true) { continue; } if (DebugHelper.DebugAction == DebugAction.Stop) { return; } SqlTable table = new SqlTable(); table.SqlTableID = Guid.NewGuid(); table.SqlDatabase = this; table.LoadTable(loopTable); SqlTableList.Add(table); } // load information for each view foreach (Microsoft.SqlServer.Management.Smo.View loopView in sqlDatabase.Views) { if (loopView.IsSystemObject == true) { continue; } SqlView view = new SqlView(); view.SqlViewID = Guid.NewGuid(); view.SqlDatabase = this; view.LoadView(loopView); SqlViewList.Add(view); } } catch (ApplicationAbortException) { throw; } catch (Exception) { throw; } }
///-------------------------------------------------------------------------------- /// <summary>This loads information from a MySQL database.</summary> /// /// <param name="sqlConnection">The input sql connection</param> ///-------------------------------------------------------------------------------- public void LoadMySQLDatabase(MySqlConnection sqlConnection) { try { // load the basic database information SqlDatabaseName = sqlConnection.Database; //Owner = sqlDatabase.Owner; //PrimaryFilePath = sqlDatabase.PrimaryFilePath; //DefaultSchema = sqlDatabase.DefaultSchema; //DefaultFileGroup = sqlDatabase.DefaultFileGroup; //CreateDate = sqlDatabase.CreateDate; // load variables NameObjectCollection variables = new NameObjectCollection(); MySqlCommand command = sqlConnection.CreateCommand(); command.CommandText = "SHOW VARIABLES;"; MySqlDataReader Reader; Reader = command.ExecuteReader(); while (Reader.Read()) { variables[Reader.GetValue(0).ToString()] = Reader.GetValue(1).ToString(); } Reader.Close(); // add variables to database properties foreach (string variable in variables.AllKeys) { if (DebugHelper.DebugAction == DebugAction.Stop) { return; } SqlProperty property = new SqlProperty(); property.SqlPropertyID = Guid.NewGuid(); property.SqlDatabase = this; property.LoadMySQLProperty(variable, null, variables[variable].ToString()); SqlPropertyList.Add(property); } // load tables of schema info DataTable tables = null; DataTable columns = null; DataTable indexes = null; DataTable indexColumns = null; DataTable foreignKeys = null; DataTable foreignKeyColumns = null; try { tables = sqlConnection.GetSchema("Tables"); } catch { Solution.ShowIssue(String.Format(DisplayValues.Exception_MySQLSchemaLoad, "Tables", SqlDatabaseName), null, Solution.IsSampleMode); } try { columns = sqlConnection.GetSchema("Columns"); } catch { Solution.ShowIssue(String.Format(DisplayValues.Exception_MySQLSchemaLoad, "Columns", SqlDatabaseName), null, Solution.IsSampleMode); } try { indexes = sqlConnection.GetSchema("Indexes"); } catch { Solution.ShowIssue(String.Format(DisplayValues.Exception_MySQLSchemaLoad, "Indexes", SqlDatabaseName), null, Solution.IsSampleMode); } try { indexColumns = sqlConnection.GetSchema("IndexColumns"); } catch { Solution.ShowIssue(String.Format(DisplayValues.Exception_MySQLSchemaLoad, "IndexColumns", SqlDatabaseName), null, Solution.IsSampleMode); } try { foreignKeys = sqlConnection.GetSchema("Foreign Keys"); } catch { Solution.ShowIssue(String.Format(DisplayValues.Exception_MySQLSchemaLoad, "Foreign Keys", SqlDatabaseName), null, Solution.IsSampleMode); } try { foreignKeyColumns = sqlConnection.GetSchema("Foreign Key Columns"); } catch { Solution.ShowIssue(String.Format(DisplayValues.Exception_MySQLSchemaLoad, "Foreign Key Columns", SqlDatabaseName), null, Solution.IsSampleMode); } // load information for each table if (tables != null) { foreach (DataRow row in tables.Rows) { if (DebugHelper.DebugAction == DebugAction.Stop) { return; } SqlTable table = new SqlTable(); table.SqlTableID = Guid.NewGuid(); table.SqlDatabase = this; table.LoadMySQLTable(sqlConnection, variables, row, columns, indexes, indexColumns, foreignKeys, foreignKeyColumns); SqlTableList.Add(table); } } } catch (ApplicationAbortException) { throw; } catch (Exception ex) { bool reThrow = BusinessConfiguration.HandleException(ex); if (reThrow) { throw; } } }