Saya mengalami masalah saat menggunakan Wizard Impor di SQL Server 2008 R2 untuk mengimpor tabel dari PostgreSQL. Saya telah menginstal driver PostgreSQL ODBC, jadi untuk Sumber Data di Wizard Impor saya memilih ".Net Framework Data Provider for Odbc" dan memberikan nama DSN untuk database PostgreSQL saya. Wizard menemukan tabel dengan baik, tetapi ketika saya melakukan impor, saya mendapatkan kesalahan
Informasi kolom untuk data sumber dan tujuan tidak dapat diambil.
“Penagihan” -> [dbo].[Penagihan]:
– Tidak dapat menemukan kolom -1.
Saya menemukan solusinya di posting blog Microsoft di sini. Rupanya masalahnya adalah bahwa berbagai driver ODBC menggunakan nama atribut yang berbeda saat melaporkan metadata kolom. Agar impor berfungsi, saya harus mengedit file "ProviderDescriptors.xml", yang terletak di
C:\Program Files\Microsoft SQL Server\100\DTS\ProviderDescriptors\ProviderDescriptors.xml
Di ...
<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection">
... elemen Saya harus mengubah atribut dari ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "COLUMN_SIZE"
NumericPrecisionColumnName = "COLUMN_SIZE"
NumericScaleColumnName = "DECIMAL_DIGITS"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
... ke ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "LENGTH"
NumericPrecisionColumnName = "PRECISION"
NumericScaleColumnName = "SCALE"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
Artinya, saya harus mengubah MaximumLengthColumnName
, NumericPrecisionColumnName
, dan NumericScaleColumnName
nilai atribut ke "LENGTH"
, "PRECISION"
, dan "SCALE"
, masing-masing.
Setelah perubahan itu dilakukan, impor dari PostgreSQL ke SQL Server berhasil dijalankan.