Ik had problemen met het gebruik van de wizard Importeren in SQL Server 2008 R2 om tabellen uit PostgreSQL te importeren. Ik had het PostgreSQL ODBC-stuurprogramma geïnstalleerd, dus voor de gegevensbron in de wizard Importeren koos ik ".Net Framework Data Provider for Odbc" en gaf de DSN-naam voor mijn PostgreSQL-database op. De wizard vond de tabellen in orde, maar toen ik de import ging uitvoeren, kreeg ik de foutmelding
Kolominformatie voor de bron- en bestemmingsgegevens kon niet worden opgehaald.
"Facturering" -> [dbo].[Facturering]:
– Kan kolom -1 niet vinden.
Ik vond de oplossing in de Microsoft-blogpost hier. Blijkbaar is het probleem dat verschillende ODBC-stuurprogramma's verschillende attribuutnamen gebruiken bij het rapporteren van kolommetagegevens. Om de import te laten werken, moest ik het bestand "ProviderDescriptors.xml" bewerken, dat zich op
bevondC:\Program Files\Microsoft SQL Server\100\DTS\ProviderDescriptors\ProviderDescriptors.xml
In de ...
<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection">
... element Ik moest de attributen wijzigen van ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "COLUMN_SIZE"
NumericPrecisionColumnName = "COLUMN_SIZE"
NumericScaleColumnName = "DECIMAL_DIGITS"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
... naar ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "LENGTH"
NumericPrecisionColumnName = "PRECISION"
NumericScaleColumnName = "SCALE"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
Dat wil zeggen, ik moest de MaximumLengthColumnName
. aanpassen , NumericPrecisionColumnName
, en NumericScaleColumnName
waarden toekennen aan "LENGTH"
, "PRECISION"
, en "SCALE"
, respectievelijk.
Nadat die wijziging was aangebracht, verliep het importeren van PostgreSQL naar SQL Server met succes.