Měl jsem problémy s použitím Průvodce importem v SQL Server 2008 R2 k importu tabulek z PostgreSQL. Měl jsem nainstalovaný ovladač PostgreSQL ODBC, takže pro zdroj dat v Průvodci importem jsem zvolil ".Net Framework Data Provider for Odbc" a dodal DSN název pro moji databázi PostgreSQL. Průvodce zjistil, že jsou tabulky v pořádku, ale když jsem šel provést import, zobrazila se chyba
Informace o sloupcích pro zdrojová a cílová data nelze načíst.
“Fakturace” -> [dbo].[Fakturace]:
– Nelze najít sloupec -1.
Řešení jsem našel v příspěvku na blogu společnosti Microsoft zde. Problém je zřejmě v tom, že různé ovladače ODBC používají při vykazování metadat sloupců různé názvy atributů. Aby import fungoval, musel jsem upravit soubor "ProviderDescriptors.xml", který byl umístěn na
C:\Program Files\Microsoft SQL Server\100\DTS\ProviderDescriptors\ProviderDescriptors.xml
V ...
<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection">
... element Musel jsem změnit atributy z ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "COLUMN_SIZE"
NumericPrecisionColumnName = "COLUMN_SIZE"
NumericScaleColumnName = "DECIMAL_DIGITS"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
... do ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "LENGTH"
NumericPrecisionColumnName = "PRECISION"
NumericScaleColumnName = "SCALE"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
To znamená, že jsem musel upravit MaximumLengthColumnName
, NumericPrecisionColumnName
a NumericScaleColumnName
hodnoty atributu do "LENGTH"
, "PRECISION"
a "SCALE"
, respektive.
Jakmile byla tato změna provedena, import z PostgreSQL na SQL Server proběhl úspěšně.