Zakładam, że próbujesz zaimportować to za pomocą źródła programu Excel w oknie dialogowym SSIS?
Jeśli tak, problem prawdopodobnie polega na tym, że SSIS pobiera próbkę pewnej liczby wierszy na początku arkusza kalkulacyjnego podczas tworzenia źródła programu Excel. Jeśli w kolumnie [ShortDescription] nie zauważy niczego zbyt dużego, domyślnie będzie to 255 znakowa kolumna tekstowa.
Tak więc, aby zaimportować dane z kolumny zawierającej wiersze z dużą ilością danych bez obcinania, istnieją dwie opcje:
- Należy upewnić się, że kolumna [ShortDescription] w co najmniej jednym z próbkowanych wierszy zawiera wartość dłuższą niż 255 znaków. Jednym ze sposobów na to jest użycie funkcji REPT(), np. =REPT('z', 4000), co utworzy ciąg 4000 litery 'z'.
- Aby uwzględnić taki wiersz, należy zwiększyć liczbę wierszy próbkowanych przez sterownik Jet Excel. Możesz zwiększyć liczbę próbkowanych wierszy, zwiększając wartość TypeGuessRows w obszarze
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
(jeśli twój system jest x64, to wHKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel
)klucz rejestru.
Więcej informacji znajdziesz pod tymi dwoma linkami:
- http://waxtadpole.wordpress.com/2008/04 /28/witaj-swiecie/
- http://technet.microsoft.com/en-us/ biblioteka/ms141683.aspx
Aby dokładniej wyjaśnić, SSIS tworzy 3 obiekty za kulisami kreatora, obiekt źródła danych programu Excel, obiekt docelowy tabeli SQL i operator przepływu danych między nimi. Obiekt źródłowy programu Excel definiuje dane źródłowe i istnieje niezależnie od pozostałych dwóch obiektów. Więc kiedy jest tworzony, próbkowanie, które opisałem, jest wykonane i rozmiar kolumny źródłowej jest ustawiony. Tak więc zanim operator przepływu danych wykona i spróbuje pobrać dane z programu Excel, aby umieścić je w tabeli, już patrzy na źródło danych, które jest ograniczone do 255 znaków.