in src/PDWScripter/PDWscripter.cs [864:922]
private void getClusteredIndexGlobal()
{
clusteredCols.Clear();
string TableKey = "";
string SchemaName;
string TableName;
string tableKeyPrevious = "";
TableSt TableStruct = new TableSt();
string clusterindexname = string.Empty;
string clusterindexnamePrevious = string.Empty;
cmd.CommandText =
"select schema_name(tbl.schema_id) as SchemaName,tbl.Name as TableName,i.key_ordinal, c.name, i.is_descending_key, si.[type] as index_type ,si.name as indexname " +
"from sys.indexes si " +
"inner join sys.tables tbl on tbl.object_id=Si.object_id and tbl.type = 'U' " +
"left join sys.index_columns i on i.object_id = si.object_id " +
"left join sys.columns c on c.column_id = i.column_id and c.object_id = i.object_id " +
"where i.index_id = 1 and si.[type] <> 2 " +
"order by schema_name(tbl.schema_id),tbl.name,key_ordinal ";
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
SchemaName = rdr.GetString(rdr.GetOrdinal("SchemaName"));
TableName = rdr.GetString(rdr.GetOrdinal("TableName"));
clusterindexname = rdr.GetString(rdr.GetOrdinal("indexname"));
TableKey = SchemaName + "." + TableName;
if (TableKey != tableKeyPrevious)
{
if (clusteredCols.Count != 0 && (TableStruct != null))
{
TableStruct.clusteredcols.AddRange(clusteredCols);
TableStruct.ClusteredIndexName = clusterindexnamePrevious;
}
TableStruct = this.dbstruct.GetTable(TableKey);
clusteredCols.Clear();
tableKeyPrevious = TableKey;
clusterindexnamePrevious = clusterindexname;
}
clusteredCols.Add(new IndexColumnDef(
rdr.GetByte(rdr.GetOrdinal("key_ordinal")),
rdr.GetString(rdr.GetOrdinal("name")),
rdr.GetBoolean(rdr.GetOrdinal("is_descending_key")),
rdr.GetByte(rdr.GetOrdinal("index_type"))
));
}
if (TableKey != "" && TableStruct != null)
{
TableStruct.clusteredcols.AddRange(clusteredCols);
TableStruct.ClusteredIndexName = clusterindexname;
}
rdr.Close();
}