Żeby wiedzieć jakiego typu dane są w źródle XML kontrolka XML Source w SSIS wymaga podania arkusza schematu XSD. Wewnętrznego (Use inline schema) lub zewnętrznego (XSD Location). Dla ułatwienia ma też przyjazną opcję generowania automatycznie schematu na podstawie wskazanego dokumentu XML – coś jak Suggest types dla połączenia do plików płaskich.
W przypadku elementów tekstowych kontrolka domyślnie zaproponuje DT_WSTR
o długości 255 znaków kiedy tylko przełączymy się na zakładkę Columns.
Żeby to obejść musimy zmienić plik XSD ze schematem.
W moim przypadku mam do czynienia z prostym plikiem zawierającym informacje o produktach i ich przypisaniu do grupy produktów:
36 AGD 1 AGD 91.00 37 AGD 2 AGD 79.80 ...
Długość kolumn w elementach ProduktNazwa
i GrupaNazwa
jest dość krótka, dlatego ustawię ją na 50 znaków. Domyślnie wygenerowany arkusz XSD ma postać:
ProduktNazwa
i GrupaNazwa
mają przypisany typ xs:string
, co oznacza ciąg znaków bez określonej długości. Zaproponowane rzutowanie na tekst Unicode 255 znaków to ograniczenie wewnętrzne kontrolki dla takich przypadków. Zmiana długości na 50 znaków wymaga zdefiniowania typu prostego (simpleType
) i ograniczenia (restriction
). Bardzo dobre wytłumaczenie dlaczego tak należy to robić znalazłem na Stack Overflow.
Teraz po przełączeniu na zakładkę kolumn nie wyskakuje żaden komunikat, a metadane przepływu danych pokazują poprawnie 50 znaków jako długość tekstu.