Hi Gerald,
The default ProviderDescriptors.xml for ODBC is:
<dtm:ProviderDescriptorSourceType="System.Data.Odbc.OdbcConnection">
<dtm:SchemaNames
TablesSchemaName="Tables"
ColumnsSchemaName="Columns"
ViewsSchemaName="Views"
/>
<dtm:TableSchemaAttributes
TableCatalogColumnName="TABLE_CAT"
TableSchemaColumnName="TABLE_SCHEM"
TableNameColumnName="TABLE_NAME"
TableTypeColumnName="TABLE_TYPE"
TableDescriptor="TABLE"
ViewDescriptor="VIEW"
SynonymDescriptor ="SYNONYM"
NumberOfTableRestrictions="3"
/>
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "COLUMN_SIZE"
NumericPrecisionColumnName = "COLUMN_SIZE"
NumericScaleColumnName = "DECIMAL_DIGITS"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
<dtm:Literals
PrefixQualifier="""
SuffixQualifier="""
CatalogSeparator="."
SchemaSeparator="."
/>
</dtm:ProviderDescriptor>
The original error message complained about ORDINAL_POSITION, COLUMN_SIZE (twice) and DECIMAL_DIGITS. I have changed the following and it is only complaining about ORDINAL_POSITION (or whatever column name I have entered for OrdinalPositionColumnName):
MaximumLengthColumnName = "LENGTH"
NumericPrecisionColumnName = "PRECISION"
NumericScaleColumnName = "SCALE"
I believe that, if I can see the details provided by the ODBC driver, I could identify the column position column name.