Stavo riscontrando problemi con l'Importazione guidata in SQL Server 2008 R2 per importare tabelle da PostgreSQL. Avevo installato il driver ODBC PostgreSQL, quindi per l'origine dati nell'Importazione guidata ho scelto ".Net Framework Data Provider for Odbc" e ho fornito il nome DSN per il mio database PostgreSQL. La procedura guidata ha trovato le tabelle a posto, ma quando sono andato a eseguire l'importazione ho ricevuto l'errore
Impossibile recuperare le informazioni sulla colonna per i dati di origine e destinazione.
“Fatturazione” -> [dbo].[Fatturazione]:
– Impossibile trovare la colonna -1.
Ho trovato la soluzione nel post del blog Microsoft qui. Apparentemente il problema è che vari driver ODBC utilizzano nomi di attributi diversi quando segnalano i metadati delle colonne. Per far funzionare l'importazione ho dovuto modificare il file "ProviderDescriptors.xml", che si trovava in
C:\Programmi\Microsoft SQL Server\100\DTS\ProviderDescriptors\ProviderDescriptors.xml
Nel ...
<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection">
... elemento ho dovuto cambiare gli attributi da ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "COLUMN_SIZE"
NumericPrecisionColumnName = "COLUMN_SIZE"
NumericScaleColumnName = "DECIMAL_DIGITS"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
... a ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "LENGTH"
NumericPrecisionColumnName = "PRECISION"
NumericScaleColumnName = "SCALE"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
Cioè, ho dovuto modificare MaximumLengthColumnName
, NumericPrecisionColumnName
e NumericScaleColumnName
attribuire i valori a "LENGTH"
, "PRECISION"
e "SCALE"
, rispettivamente.
Una volta apportata la modifica, l'importazione da PostgreSQL a SQL Server è stata eseguita correttamente.