मुझे PostgreSQL से तालिकाओं को आयात करने के लिए SQL Server 2008 R2 में आयात विज़ार्ड का उपयोग करने में समस्या हो रही थी। मेरे पास पोस्टग्रेएसक्यूएल ओडीबीसी ड्राइवर स्थापित था, इसलिए आयात विज़ार्ड में डेटा स्रोत के लिए मैंने "ओडीबीसी के लिए नेट फ्रेमवर्क डेटा प्रदाता" चुना और मेरे पोस्टग्रेएसक्यूएल डेटाबेस के लिए डीएसएन नाम की आपूर्ति की। विज़ार्ड ने तालिकाओं को ठीक पाया, लेकिन जब मैं आयात करने गया तो मुझे त्रुटि मिली
<ब्लॉककोट>स्रोत और गंतव्य डेटा के लिए कॉलम जानकारी पुनर्प्राप्त नहीं की जा सकी।
"बिलिंग" -> [डीबीओ]। [बिलिंग]:
- कॉलम -1 नहीं खोजा जा सका।
मुझे यहां माइक्रोसॉफ्ट ब्लॉग पोस्ट में समाधान मिला। स्पष्ट रूप से समस्या यह है कि कॉलम मेटाडेटा की रिपोर्ट करते समय विभिन्न ओडीबीसी ड्राइवर विभिन्न विशेषता नामों का उपयोग करते हैं। आयात को काम पर लाने के लिए मुझे "ProviderDescriptors.xml" फ़ाइल को संपादित करना पड़ा, जो
पर स्थित थी।C:\Program Files\Microsoft SQL Server\100\DTS\ProviderDescriptors\ProviderDescriptors.xml
में ...
<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection">
... तत्व मुझे से विशेषताओं को बदलना पड़ा ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "COLUMN_SIZE"
NumericPrecisionColumnName = "COLUMN_SIZE"
NumericScaleColumnName = "DECIMAL_DIGITS"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
... से ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "LENGTH"
NumericPrecisionColumnName = "PRECISION"
NumericScaleColumnName = "SCALE"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
यानी, मुझे MaximumLengthColumnName
में बदलाव करना पड़ा , NumericPrecisionColumnName
, और NumericScaleColumnName
"LENGTH"
. के लिए विशेषता मान , "PRECISION"
, और "SCALE"
, क्रमशः।
एक बार उस परिवर्तन को करने के बाद PostgreSQL से SQL सर्वर में आयात सफलतापूर्वक चला।