Jag hade problem med att använda Import Wizard i SQL Server 2008 R2 för att importera tabeller från PostgreSQL. Jag hade PostgreSQL ODBC-drivrutinen installerad, så för datakällan i Import Wizard valde jag ".Net Framework Data Provider for Odbc" och angav DSN-namnet för min PostgreSQL-databas. Guiden hittade tabellerna okej, men när jag gick för att utföra importen fick jag felet
Kolumninformation för käll- och måldata kunde inte hämtas.
"Fakturering" -> [dbo].[Fakturering]:
– Kan inte hitta kolumn -1.
Jag hittade lösningen i Microsofts blogginlägg här. Problemet är tydligen att olika ODBC-drivrutiner använder olika attributnamn när de rapporterar kolumnmetadata. För att få importen att fungera var jag tvungen att redigera filen "ProviderDescriptors.xml", som fanns på
C:\Program Files\Microsoft SQL Server\100\DTS\ProviderDescriptors\ProviderDescriptors.xml
I ...
<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection">
... element Jag var tvungen att ändra attributen från ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "COLUMN_SIZE"
NumericPrecisionColumnName = "COLUMN_SIZE"
NumericScaleColumnName = "DECIMAL_DIGITS"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
... till ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "LENGTH"
NumericPrecisionColumnName = "PRECISION"
NumericScaleColumnName = "SCALE"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
Det vill säga, jag var tvungen att justera MaximumLengthColumnName
, NumericPrecisionColumnName
, och NumericScaleColumnName
attribut värden till "LENGTH"
, "PRECISION"
och "SCALE"
, respektive.
När den ändringen väl gjordes kördes importen från PostgreSQL till SQL Server framgångsrikt.