2010-06-15 5 views
0

Je souhaite convertir une base de données à partir d'un accès à SQL Server à l'aide de SSIS. Je ne peux pas convertir les colonnes date/heure de la base de données d'accès. SSIS dit quelque chose comme:Convertir la date d'accès à SQL Server avec SSIS

conversion between DT_Date and DT_DBTIMESTAMP is not supported. 

(Il est traduit de ma version allemande, pourrait être différent en version anglaise). Dans Access j'ai la colonne date/heure, dans SQL Server j'ai datetime. Dans le diagramme de flux de données du SSIS, j'ai une source OLE DB pour la base de données d'accès, une cible de serveur sql et une conversion de données. Dans la conversion de données, je convertis les colonnes à ce jour [DT_DATE]. Ils sont connectés comme ceci:

AccessDB -> conversion -> SQL DB 

Qu'est-ce que je fais mal? Comment puis-je convertir les colonnes de date d'accès en colonnes de date SQL Server?

+0

L'icône d'erreur se produit dans la cible sql – Arne

+0

J'utilise SQL Server 2008 – Arne

Répondre

1

Il semblerait que vous deviez ajouter une conversion spécifique pour convertir cette colonne au type correct. C'est le DT_DBTIMESTAMP que vous devez convertir, pas DT_DATE. À l'aide d'une transformation de colonne dérivée par exemple, vous pouvez utiliser une expression comme:

(DT_DBTIMESTAMP)YourDateColumn 
+0

Merci pour la réponse. Lorsque j'ajoute une transformation de colonne dérivée et que je convertis la colonne en DT_DBTIMESTAMP, j'obtiens l'erreur que la conversion de DT_DATE en DT_DBTIMESTAMP n'est pas supportée. – Arne

+0

C'est bizarre. Je l'ai essayé en téléchargeant l'ancien exemple de base de données Northwind Access depuis 1999, en le convertissant en Access 2003, puis en créant un paquet SSIS avec une source OLE DB connectant cette base de données Access, en récupérant la table Orders (qui contient plusieurs DT_DATE). connu sous le nom de date/heure - colonnes), en attachant une transformation de colonne dérivée à la source OLEDB, et je pourrais convertir en DT_DBDATETIME sans aucun problème. Etes-vous sûr que la conversion précédente ne cause pas cette erreur (a-t-elle été supprimée)? –

+0

Oui, j'ai supprimé la conversion précédente. Maintenant j'ai "AccessDB -> Transformation de colonne dérivée -> SQL DB". Mais l'erreur est montrée dans la dernière case, la base de données SQL. Est-ce que ceci pourrait être le problème? J'ai créé une nouvelle table dans la base de données avec SSIS en utilisant le SQL standard qui est créé lorsque vous cliquez sur le nouveau bouton dans les propriétés de la base de données SQL. Quels types de données avez-vous utilisés pour la base de données cible? – Arne

0

Vous utilisez un autre fournisseur sur le côté source. J'ai utilisé le fournisseur JET. Je fais ceci sur un ordinateur où aucun accès n'est installé. Lorsque j'essaie de créer une connexion de données à l'aide du fournisseur OLE DB du moteur de base de données Access Office 12.0, un message d'erreur indique que le fichier d'informations sur le groupe de travail est manquant. Je reçois ce message sur le test de connexion.

La question est de savoir si la conversion dépend du pilote db que vous utilisez pour obtenir les données. Je ne peux pas installer Access sur le serveur sur lequel je travaille, donc je ne peux pas l'essayer. Cela pourrait-il être la cause du problème?

+0

oups, je ne peux plus répondre à votre commentaire ... J'ai la version 10.0.1600.22 et la version SP1 sur le site MS dit 10.00.2531.00, donc je suppose que je ne l'ai pas. – Arne

+0

Je vous recommande d'installer SP1 avant d'essayer quoi que ce soit d'autre. Cela n'a aucun sens de chercher une solution lorsque le problème est probablement causé par un bug qui a déjà été résolu il y a plusieurs mois ... En outre, le pilote ACE (la version la plus récente de JET, qui est ce que je utilisé dans mon test) est disponible en téléchargement gratuit: http://www.microsoft.com/downloads/details.aspx?familyid=7554f536-8c28-4598-9b72-ef94e038c891&displaylang=en Il existe également une version pour Office 2010 , et il devrait être rétrocompatible. Je suggère de faire un essai si vous le pouvez. Devrait fonctionner correctement. –

0

casting D_Date colonne DT_DBTIMESTAMP résoudre le même problème pour moi.

Questions connexes