Question

J'écris un petit utilitaire pour copier une base de données d'une base de données exclusive ODBC dans une base de données SQL Server.Tout fonctionne bien, sauf lorsque j'utilise SQLBulkCopy pour copier sur les données.Cela fonctionne dans la plupart des cas, mais pas quand il essaie de copier un champ de temps en une date de date SQL.Je reçois cette erreur:

la valeur donnée de Type Timespan de la source de données ne peut pas être convertie en type DateTime de la colonne cible spécifiée.

Lorsque je crée le schéma dans SQL Server, je dois apporter les types de date et heure de la date de DateTime dans SQL Server, il n'y a donc aucun moyen de cela.Je voulais utiliser SQLBULKCopy, donc je n'ai pas eu à lire manuellement tous les enregistrements de chaque table et à envelopper la logique autour des cas spéciaux.Avant de descendre cette route, y a-t-il une autre façon de le faire?Je n'ai aucun contrôle du tout sur le schéma ou le contenu de la base de données source.

Était-ce utile?

La solution

Je suppose que vous avez affaire à Pre-SQL Server 2008. SQL Server 2008 possède des types de données de date et d'heure.

Je pense que vous devriez utiliser un jeu de données qui correspondait au schéma SQL Server et chargez-le à partir de votre lecteur source, changeant de manière appropriée à une date d'heure en ajoutant des informations de date (par exemple 1/1/1900).Ensuite, utilisez WritetoServer (DataTable).Vous voudrez peut-être le faire par lots, car vous pouvez utiliser un tas de mémoire la lecture tout en un jeu de données.

Une raison particulière que vous ne pouvez pas utiliser SSIS?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top