protected virtual void ExtractFulltextIndexes() { string query = @" SELECT t.schema_id, fic.object_id, fi.unique_index_id, fc.name, fc.is_default, fic.column_id, fic.type_column_id, fl.name, i.name, fi.change_tracking_state, fi.crawl_start_date FROM {CATALOG}.sys.tables t INNER JOIN {CATALOG}.sys.fulltext_index_columns AS fic ON t.object_id = fic.object_id INNER JOIN {CATALOG}.sys.fulltext_languages AS fl ON fic.language_id = fl.lcid INNER JOIN {CATALOG}.sys.fulltext_indexes fi ON fic.object_id = fi.object_id INNER JOIN {CATALOG}.sys.fulltext_catalogs fc ON fc.fulltext_catalog_id = fi.fulltext_catalog_id INNER JOIN {CATALOG}.sys.indexes AS i ON fic.object_id = i.object_id AND fi.unique_index_id = i.index_id WHERE {SYSTABLE_FILTER} AND t.schema_id {SCHEMA_FILTER} ORDER BY t.schema_id, fic.object_id, fic.column_id"; query = PerformReplacements(query); int currentTableId = 0; ColumnResolver table = null; FullTextIndex index = null; using (var cmd = Connection.CreateCommand(query)) using (var reader = cmd.ExecuteReader()) while (reader.Read()) { int nextTableId = reader.GetInt32(1); if (currentTableId != nextTableId) { GetDataTable(nextTableId, ref currentTableId, ref table); index = table.Table.CreateFullTextIndex(string.Empty); index.FullTextCatalog = reader.GetBoolean(4) ? null : reader.GetString(3); index.UnderlyingUniqueIndex = reader.GetString(8); index.ChangeTrackingMode = GetChangeTrackingMode(reader.GetString(9), reader.IsDBNull(10)); } var column = index.CreateIndexColumn(table.GetColumn(reader.GetInt32(5))); column.TypeColumn = (reader.IsDBNull(6)) ? null : table.GetColumn(reader.GetInt32(6)); column.Languages.Add(new Language(reader.GetString(7))); } }
private void ReadFullTextIndexColumnData(DbDataReader reader, ExtractionContext context, ref int currentTableId, ref ColumnResolver table, ref FullTextIndex index) { var nextTableId = reader.GetInt32(1); if (currentTableId != nextTableId) { GetDataTable(nextTableId, context, ref currentTableId, ref table); index = table.Table.CreateFullTextIndex(string.Empty); index.FullTextCatalog = reader.GetBoolean(4) ? null : reader.GetString(3); index.UnderlyingUniqueIndex = reader.GetString(8); index.ChangeTrackingMode = GetChangeTrackingMode(reader.GetString(9), reader.IsDBNull(10)); } var column = index.CreateIndexColumn(table.GetColumn(reader.GetInt32(5))); column.TypeColumn = (reader.IsDBNull(6)) ? null : table.GetColumn(reader.GetInt32(6)); column.Languages.Add(new Language(reader.GetString(7))); }