private void getNonclusteredIndexesGlobal()

in src/PDWScripter/PDWscripter.cs [1003:1066]


        private void getNonclusteredIndexesGlobal()
        {
            nonclusteredIndexes.Clear();
            string TableKey = "";
            string SchemaName;
            string TableName;
            string tableKeyPrevious = "";
            TableSt TableStruct = new TableSt();
            string idxnamePrevious = "";
            string idxname = "";
            NonclusteredIndexDef ncidef = null;

            cmd.CommandText = @"select tbl.Name as TableName,schema_name(schema_id) as SchemaName,ix.name as index_name, i.key_ordinal, c.name, i.is_descending_key
                                    from sys.index_columns i
                                        inner join sys.tables tbl on tbl.object_id = i.object_id and tbl.type = 'U'
                                            join sys.indexes ix on ix.index_id = i.index_id and ix.object_id = i.object_id
                                                join sys.columns c on c.column_id = i.column_id  and c.object_id = ix.object_id
                                                where i.key_ordinal > 0
                                                and i.index_id > 1-- NonClustered Indexes
                                                 order by schema_name(tbl.schema_id),tbl.name,ix.name, key_ordinal";
            rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {

                SchemaName = rdr.GetString(rdr.GetOrdinal("SchemaName"));
                TableName = rdr.GetString(rdr.GetOrdinal("TableName"));
                idxname = rdr.GetString(rdr.GetOrdinal("index_name"));
                TableKey = SchemaName + "." + TableName;
                if (TableKey != tableKeyPrevious)
                {
                    if (nonclusteredIndexes.Count != 0 && TableStruct != null)
                    {
                        TableStruct.nonclusteredIndexes.AddRange(nonclusteredIndexes);
                    }
                    TableStruct = this.dbstruct.GetTable(TableKey);
                    nonclusteredIndexes.Clear();
                    tableKeyPrevious = TableKey;
                }

                if (TableStruct != null)
                {
                    if (idxname != idxnamePrevious)
                    {
                        ncidef = new NonclusteredIndexDef(idxname);
                        nonclusteredIndexes.Add(ncidef);
                        idxnamePrevious = idxname;
                        TableStruct.nonclusteredIndexes.Add(new NonclusteredIndexDef(idxname));
                    }

                    TableStruct.GetIndex(idxname).cols.Add(new IndexColumnDef(
                          rdr.GetByte(rdr.GetOrdinal("key_ordinal")),
                          rdr.GetString(rdr.GetOrdinal("name")),
                          rdr.GetBoolean(rdr.GetOrdinal("is_descending_key")),
                          0
                          ));
                }
            }


            rdr.Close();


        }