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!
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
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