in src/PDWScripter/PDWscripter.cs [1157:1219]
private void getStatsGlobal()
{
stats.Clear();
string statname = "";
StatDef statdef = null;
string TableKey = "";
string SchemaName;
string TableName;
string tableKeyPrevious = "";
TableSt TableStruct = new TableSt();
string statnamePrevious = "";
cmd.CommandText =
"select schema_name(tbl.schema_id) as SchemaName,tbl.name as TableName,s.name as stat_name, sc.stats_column_id, c.name " +
"from sys.stats s " +
"inner join sys.tables tbl on tbl.object_id=s.object_id and tbl.type = 'U' " +
"join sys.stats_columns sc on s.stats_id = sc.stats_id and s.object_id = sc.object_id " +
"join sys.columns c on c.column_id = sc.column_id and c.object_id = sc.object_id " +
"and user_created=1 " +
"order by schema_name(tbl.schema_id),tbl.name,s.name, sc.stats_column_id ";
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
SchemaName = rdr.GetString(rdr.GetOrdinal("SchemaName"));
TableName = rdr.GetString(rdr.GetOrdinal("TableName"));
statname = rdr.GetString(rdr.GetOrdinal("stat_name"));
TableKey = SchemaName + "." + TableName;
if (TableKey != tableKeyPrevious)
{
if (stats.Count != 0 && TableStruct != null)
{
TableStruct.statistics.AddRange(stats);
}
TableStruct = this.dbstruct.GetTable(TableKey);
stats.Clear();
tableKeyPrevious = TableKey;
}
if (TableStruct != null)
{
if (statname != statnamePrevious)
{
statname = rdr.GetString(rdr.GetOrdinal("stat_name"));
statdef = new StatDef(statname);
TableStruct.statistics.Add(statdef);
statnamePrevious = statname;
}
statdef.cols.Add(new StatColumnDef(
rdr.GetInt32(rdr.GetOrdinal("stats_column_id")),
rdr.GetString(rdr.GetOrdinal("name"))
));
}
}
rdr.Close();
}