Permettez-moi de commencer par clarifier qu'il ne s'agit pas d'une question en double , ni d'un doublon potentiel d'ailleurs. J'ai essayé d'implémenter chaque réponse à chaque variante qui existe déjà de ce problème sur StackOverflow et DBA Stack Exchange, sans aucune chance.
J'ai eu du mal avec ce problème au cours des deux derniers jours (en travaillant dessus environ 7 heures par jour), et même après avoir recherché le problème sur Google, il semble que personne d'autre n'ait la même variante exacte de mon problème.
Qu'est-ce que j'essaye de faire?
Dans SSIS, j'essaie de lire à partir d'un fichier CSV et d'en insérer les lignes dans une base de données OLE DB. Pour cela, j'ai fait la configuration la plus simple jamais vue ci-dessous.
Flat File Source
- lit les lignes CSV.Derived Column
- ne fait actuellement rien (il est juste là pour expérimenter).Data Conversion
- ne fait actuellement rien (il est juste là pour expérimenter).OLE DB Destination
- stocke les lignes dans la base de données.
Lorsque j'essaie de l'exécuter, il cesse de s'exécuter sur ma destination OLE DB avec le message d'erreur suivant.
Une erreur s'est produite avec la colonne d'entrée "Montant" (187) sur l'entrée "Entrée de destination OLE DB" (51). Le statut de la colonne renvoyée était: "La valeur n'a pas pu être convertie en raison d'une perte potentielle de données.".
La colonne qui échoue ( Amount
) est actuellement de type DT_STR
. Il semble que ce soit le type auquel j'ai le plus confiance en ce moment.
Qu'est-ce que j'ai essayé?
- J'ai essayé d'utiliser la fonction
Flat File Connection
«Suggérer des types» de la colonne qui échoue. Cela lui a fait recommander leSingle byte signed int
type de données.- Arrête à ma source de fichier plat .
- L'erreur est Échec de la conversion des données. La conversion de données pour la colonne "Montant" a renvoyé la valeur d'état 2 et le texte d'état "La valeur n'a pas pu être convertie en raison d'une perte potentielle de données.".
- J'ai essayé d'utiliser le
Derived Column
pour convertir la colonne en unDT_I4
.- Arrête à ma colonne dérivée .
- L'erreur est Échec de la conversion des données. La conversion de données pour la colonne "Montant" a renvoyé la valeur d'état 2 et le texte d'état "La valeur n'a pas pu être convertie en raison d'une perte potentielle de données.".
- J'ai essayé d'utiliser le
Data Conversion
pour convertir la valeur de ma colonne en aDT_I4
.- Arrête à mon
Data Conversion
. - L'erreur est Échec de la conversion des données. La conversion de données pour la colonne "Montant" a renvoyé la valeur d'état 2 et le texte d'état "La valeur n'a pas pu être convertie en raison d'une perte potentielle de données.".
- Arrête à mon
- J'ai essayé de changer la longueur de ma
DT_STR
valeur dans la source et la destination.- S'arrête à la source ou à la destination en fonction des paramètres.
- J'ai essayé de me connecter à l'aide d'un connecteur Excel Source à la place avec et sans l'
IMEX=1
ajout à la chaîne de connexion. Pas de chance.
Mon sens de la programmation me dit que je suis foutu. Je n'ai jamais rencontré un si gros problème pour une chose aussi simple.
Et pourquoi ne puis-je pas simplement ignorer la perte "potentielle" de données? C'est vraiment frustrant de dire le moins.
Mon système
Il s'agit d'une machine Windows Server 2008 R2 avec SQL Server 2008 installé. La machine elle-même est entièrement mise à jour via Windows Update.
Amount
?
Amount
colonne. Prenez une capture d'écran et mettez à jour votre question avec cette image.