2013-07-02 3 views
3

J'ai une base de données SQL Server 2005 SP2 qui a une table avec un attribut poc_resp_city qui est nvarchar(35).Erreur de troncature de chaîne SSIS

Il a été modifié en nvarchar(80) il y a 2 mois sans aligner le même attribut dans l'entrepôt de données. (Qui a encore nvarchar(35))

Le paquet de chargement de données SSIS (après deux mois de fonctionnement) donne maintenant de retour l'échec du paquet à chaque fois que je le lance avec l'erreur suivante:

There was an error with output column "poc_resp_city" (2250) on output "OLE DB Source Output" (11). The column status returned was: "Text was truncated or one or more characters had no match in the target code page.". There was an error with output column "poc_resp_city" (2250) on output "OLE DB Source Output" (11). The column status returned was: "Text was truncated or one or more characters had no match in the target code page.".

SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on component "Source Table" (1) returned error code 0xC020902A. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure.

Ni le paquet ni les les bases de données ont été modifiées en ce qui concerne ce problème. Je sais que je pourrais ignorer cette erreur ou je pourrais faire les arrangements pour m'assurer que cela fonctionne mais je veux fournir une réponse appropriée et acceptable pourquoi cette erreur apparaît 2 mois après la modification? Parce que peut-être je manque une étape importante dans cette situation. Remarque importante: Je n'ai même pas un seul enregistrement qui a plus de 35 caractères, donc la troncature ne se produit jamais. (Cet avertissement appartient à une sorte de validation SSIS)

Maintenant je pense que peut-être après un certain temps, le paquet SSIS se recompile et maintenant il voit ce désalignement dans ses métadonnées (35 =/= 80) et parce que TruncationRowDisposition L'attribut est défini sur RD_FailComponent, il échoue le composant.

Et je voudrais exclure l'option page de code parce que chaque colonne de base de données est nvarchar, pas varchar, donc cela ne devrait pas être le cas.

Merci!

+0

Avez-vous vérifié MAX (LEN()) dans la table source? Je suppose que vous avez en quelque sorte choisi un enregistrement de plus de 35 caractères, peut-être non imprimables ou des espaces de fuite. Cela semble plus probable que l'explication de recompilation spontanée, bien que SSIS 2005 soit plutôt vieux et ait toujours eu un comportement plus bizarre que 2008 ou 2012. – criticalfix

+0

Je l'ai vérifié et vérifié LEN (city + 'a') aussi pour ignorer les espaces blancs. (parce que LEN ('aa') et LEN ('aa') donnent la même valeur Et il n'y a pas d'enregistrement qui dépasse 35 – dn7123

Répondre

0

Vous devez rafraîchir la taille de la colonne:

  1. avec le bouton droit bouton sur OLE DB Source -> Show Advanced Editor
  2. Choisissez Input and Output Properties onglet ->Ole DB Source Output ->Output Columns
  3. Dans le panneau de droite Length ligne insérez votre nouvelle taille.
  4. Poussez OK

Show Advanced Editor

Ou vous pouvez copier votre requête à partir OLE DB Source, supprimer OLE DB Source, insérer une nouvelle requête OLE DB Source et coller. Cela va automatiquement actualiser vos colonnes.

Rappelez-vous ce qu'il ya élément probablement plus en flux de données où vous devez modifier la longueur de votre colonne, comme Data Converion ...

+0

Oui, je sais que je peux faire ce travail en utilisant l'éditeur avancé et en réglant la longueur des données à la bonne. Mais du point de vue du client, je dois donner une bonne raison pour que cette erreur apparaisse dans SSIS après 2 mois de désalignement. – dn7123

+0

Vous pouvez diviser une donnée de requête en deux et regarder si l'erreur augmente. Puis diviser à nouveau où l'erreur est dans la moitié jusqu'à ce que vous trouviez une ligne qui soulève une erreur :) – Justin

+0

Il n'y a pas d'erreur SQL Server. Cette erreur n'apparaît que dans la tâche de validation des métadonnées de SSIS. – dn7123