Jag antar att du försöker importera detta med en Excel-källa i SSIS-dialogrutan?
Om så är fallet är problemet förmodligen att SSIS samplar ett visst antal rader i början av ditt kalkylark när det skapar Excel-källan. Om det i kolumnen [ShortDescription] inte märker något för stort, kommer den som standard att ha en textkolumn på 255 tecken.
Så för att importera data från en kolumn som innehåller rader med stora mängder data utan trunkering, finns det två alternativ:
- Du måste se till att kolumnen [ShortDescription] i minst en av de samplade raderna innehåller ett värde som är längre än 255 tecken. Ett sätt att göra detta är att använda REPT()-funktionen, t.ex. =REPT('z', 4000), vilket skapar en sträng på 4000 av bokstaven 'z'.
- Du måste öka antalet rader som samplades av Jet Excel-drivrutinen för att inkludera en sådan rad. Du kan öka antalet samplade rader genom att öka värdet på TypeGuessRows under
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
(om ditt system är x64 då underHKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel
)registernyckel.
Du kan se mer information på dessa två länkar:
- http://waxtadpole.wordpress.com/2008/04 /28/hello-world/
- http://technet.microsoft.com/en-us/ library/ms141683.aspx
För att ytterligare förklara skapar SSIS 3 objekt bakom kulisserna i guiden, ett Excel-datakällobjekt, ett SQL-tabelldestinationsobjekt och en dataflödesoperator mellan dem. Excel-källobjektet definierar källdata och existerar oberoende av de andra två objekten. Så när den har skapats görs provtagningen som jag beskrev och storleken på källkolumnen är inställd. Så när dataflödesoperatören kör och försöker hämta data från Excel för att lägga in i din tabell, tittar den redan på en datakälla som är begränsad till 255 tecken.