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();
}