Ik neem aan dat je dit probeert te importeren met een Excel-bron in het SSIS-dialoogvenster?
Als dat het geval is, is het probleem waarschijnlijk dat SSIS een aantal rijen aan het begin van uw spreadsheet bemonstert wanneer het de Excel-bron maakt. Als het in de [Korte Beschrijving]-kolom niets te groots opmerkt, wordt standaard een tekstkolom van 255 tekens weergegeven.
Dus om gegevens te importeren uit een kolom die rijen met grote hoeveelheden gegevens bevat zonder truncatie, zijn er twee opties:
- U moet ervoor zorgen dat de kolom [ShortDescription] in ten minste een van de rijen in de steekproef een waarde bevat die langer is dan 255 tekens. Een manier om dit te doen is door de REPT() functie te gebruiken, b.v. =REPT('z', 4000), waarmee een string van 4000 van de letter 'z' wordt gemaakt.
- U moet het aantal rijen dat wordt gesampled door het Jet Excel-stuurprogramma verhogen om een dergelijke rij op te nemen. U kunt het aantal bemonsterde rijen verhogen door de waarde van TypeGuessRows te verhogen onder de
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
(of als uw systeem x64 is, dan onder deHKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel
)registratiesleutel.
U kunt meer informatie bekijken via deze twee links:
- http://waxtadpole.wordpress.com/2008/04 /28/hallo-wereld/
- http://technet.microsoft.com/en-us/ bibliotheek/ms141683.aspx
Om het verder uit te leggen, maakt SSIS 3 objecten achter de schermen van de wizard, een Excel-gegevensbronobject, een SQL-tabelbestemmingsobject en een gegevensstroomoperator daartussen. Het Excel-bronobject definieert de brongegevens en bestaat onafhankelijk van de andere twee objecten. Dus wanneer het is gemaakt, is de bemonstering die ik heb beschreven klaar en wordt de grootte van de bronkolom ingesteld. Dus tegen de tijd dat de gegevensstroomoperator de gegevens uitvoert en probeert de gegevens uit Excel te halen om in uw tabel te plaatsen, kijkt hij al naar een gegevensbron die beperkt is tot 255 tekens.