View Łukasz Herman's LinkedIn profileView my profile

statystyki www stat.pl

Blog > Komentarze do wpisu

Column cannot be processed because more than one code page (1256 and 1252) are specified for it

Taki komunikat otrzymuję tworząc paczkę SSIS. Rozwiązanie robocze to zmiana we właściwościach OLEDB Source:

1. AlwaysUseDefaultCodePage=true

2. Zmiany DefaultCodePage na 1252

Po tym wystąpił kolejny błąd (jakby mnie to zdziwiło...)

SQL Server Destination] Error: Unable to prepare the SSIS bulk insert for data insertion.
[SSIS.Pipeline] Error: component "SQL Server Destination" failed the pre-execute phase and returned error code 0xC0202071.

Tutaj jest już jasne rozwiązanie z MS Knowledge Base: You may get "Unable to prepare the SSIS bulk insert for data insertion" error on UAC enabled systems

Ok. Nie jest źle. SSIS działa. Importuje nawet dane. Tylko muszę powalczyć z kodowaniem znaków bo mam krzaki w bazie.

Jak robiłem Selecta bezpośrednio z Visual FoxPro, to musiałem jeszcze przekonwertować dane za pomocą:

SELECT CPCONVERT(620, 1250,kolumna) FROM KOLUMNA.DBF

Dziwne jest to, że ze źródła wychodzą dobre kodowanie, a podczas zapisywania do bazy docelowej kodowanie się rozjeżdża.

Po wielu kombinacjach (w zasadzie to chyba wszystkie przetestowałem), doszedłem do tego że kodowanie wszędzie ma być ustawione na 1250. Z pliku DBF dane wyciągam korzystając z kodu SQL i robię od razu konwersję za pomocą CPConvert (patrz wyżej).

Następnie dane wędrują do bazy MSSQL, ale nie jako standardowe połączenie z MSSQLem, ale korzystając z OleDB. Tylko w ten sposób kodowanie pozostaje prawidłowe.

wtorek, 23 listopada 2010, hermanluk
Tagi: SSIS DBF OLEDB

Polecane wpisy

TrackBack
TrackBack w tym blogu jest moderowany. TrackBack URL do wpisu: