Jeg går ud fra, at du prøver at importere dette ved hjælp af en Excel-kilde i SSIS-dialogen?
Hvis det er tilfældet, er problemet sandsynligvis, at SSIS prøver et vist antal rækker i begyndelsen af dit regneark, når det opretter Excel-kilden. Hvis den i kolonnen [ShortDescription] ikke bemærker noget for stort, vil den som standard have en tekstkolonne på 255 tegn.
Så for at importere data fra en kolonne, der indeholder rækker med store mængder data uden trunkering, er der to muligheder:
- Du skal sikre dig, at kolonnen [ShortDescription] i mindst én af de samplede rækker indeholder en værdi på mere end 255 tegn. En måde at gøre dette på er at bruge REPT()-funktionen, f.eks. =REPT('z', 4000), hvilket vil skabe en streng på 4000 af bogstavet 'z'.
- Du skal øge antallet af rækker, der samples af Jet Excel-driveren for at inkludere en sådan række. Du kan øge antallet af samplede rækker ved at øge værdien af TypeGuessRows under
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
(hvis dit system er x64, så underHKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel
)registreringsnøgle.
Du kan se mere information på disse to links:
- http://waxtadpole.wordpress.com/2008/04 /28/hello-world/
- http://technet.microsoft.com/en-us/ library/ms141683.aspx
For yderligere at forklare opretter SSIS 3 objekter bag kulisserne i guiden, et Excel-datakildeobjekt, et SQL-tabeldestinationsobjekt og en dataflowoperator mellem dem. Excel-kildeobjektet definerer kildedataene og eksisterer uafhængigt af de to andre objekter. Så når den er oprettet, er den prøveudtagning, jeg beskrev, udført, og kildekolonnens størrelse er indstillet. Så på det tidspunkt, hvor dataflowoperatøren udfører og forsøger at trække dataene fra Excel for at lægge dem i din tabel, kigger den allerede på en datakilde, der er begrænset til 255 tegn.