Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/10/2011, 11h56   #1
 
Inscription : septembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 14
Points : -2
Points : -2
Par défaut Conversion Access=>SQL Express 2008

Bonjour,

Je suis en train d'essayer de convertir une base Access vers SQL Serveur 2008 Express.
J'ai créé la nouvelle base dans SQL Serveur et j'utilise l'assistant "importer" sur cette derniere

Lors de l'import, je me retrouve avec l'erreur suivante:
Code :
1
2
Erreur 0xc020901c: Tâche de flux de données 1: Une erreur s'est produite avec colonne d'entrée «*ct_suivi_date_relance*» (358) sur entrée «*Destination Input*» (239). État de colonne retourné*: «*La conversion a échoué car la valeur des données a dépassé les capacités du type spécifié.*».
 (Assistant Importation et Exportation SQL Server)
Lorsque j'examine la table dans Access, je ne vois rien de particulier dans cette colonne, si ce n'est que certaines lignes sont vides (NULL ??) est ce ça qui fait planter le tout ? Sachant que lors de l'import, je vois passer environ 1/3 des lignes correctement avant l'erreur

Merci de votre aide
waxman2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 12h11   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Bonjour,

C'est peut-être une valeur de chaîne qui dépasse la longueur maximale de la colonne dans la table cible ...

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 13h01   #3
 
Inscription : septembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 14
Points : -2
Points : -2
Oups, un oubli de ma part:

Il s'agit de type datetime

Merci
waxman2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 15h56   #4
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Dans ce cas il vous faut rechercher dans la base Access une donnée qui ne serait pas transtypable en type datetime de SQL Server.

Notez que vous pouvez exporter assez facilement le contenu de la table Access dans une fichier texte et le charger par BULK INSERT dans une table d'une base de données SQL Server.
Si vous exportez seulement la colonne qui contient une valeur datetime dans une colonne de type varchar(20) par exemple, et que vous tentez un CAST(maColonne AS datetime), vous allez finir par trouver où cela coince

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 10h12   #5
 
Inscription : septembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 14
Points : -2
Points : -2
Merci,
J'ai essayé cet import en tant que varchar

Dans mon assistant d'importation SQL Serveur, j'ai sélectionné ma table et dans la section "modifier les mappages", j'ai mis varchar comme type destination pour la colonne en question (d'ailleurs, je ne peux préciser la taille 20, il m'impose une taille "max")

Je me retrouve avec les messages d'erreur suivants:
Code :
1
2
1 conversion(s) de types de colonnes inconnus trouvés
Le package ne sera pas exécuté.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
[Informations sur la source]
Emplacement source*: C:\Documents AND Settings\Administrateur\Bureau\xxxx.mdb
Fournisseur de source*: Microsoft.Jet.OLEDB.4.0
TABLE*: `contact_table`
Colonne*: ct_suivi_date_succes
Type de colonne*: DateTime
Type SSIS*: horodatage base de données [DT_DBTIMESTAMP]
Fichier de mappage (au type SSIS)*: C:\Program Files\Microsoft SQL Server\100\DTS\MappingFiles\JetToSSIS.xml
 
[Informations de destination]
Emplacement de destination*: monserveur\mabdd
Fournisseur de destination*: SQLNCLI10
TABLE*: [dbo].[contact_table]
Colonne*: ct_suivi_date_succes
Type de colonne*: varchar
Type SSIS*: flux de texte [DT_TEXT]
Fichier de mappage (au type SSIS)*: C:\Program Files\Microsoft SQL Server\100\DTS\MappingFiles\MSSQLToSSIS10.XML
 
[Étapes de conversion]
Conversion inconnue ...
Fichier de conversion SSIS*: C:\Program Files\Microsoft SQL Server\100\DTS\binn\DtwTypeConversion.xml
Une idée ??
Merci encore
waxman2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 12h25   #6
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 353
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 353
Points : 9 746
Points : 9 746
Oui, visiblement vous tentez de convertir un type Date (ou son équivalent Access) en type TimeStamp (réservé au versionning de row, qui n'a pas à être écrit directement). Forcer une conversion en type DateTime. (ou Date ? je ne me souviens plus et je n'ai pas de Sql Server sous la main).

Par ailleurs vérifier les bornes maxi et mini des dates en question quoique je ne pense pas qu'il y ait de ce coté une incompatibilité entre Sql Server et Access.
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 15h47   #7
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
(ou Date ? je ne me souviens plus et je n'ai pas de Sql Server sous la main).
en fait les deux existent depuis SQL SERVER 2008 (date ne stockant pas les heures).
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 10h42   #8
 
Inscription : septembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 14
Points : -2
Points : -2
Bonjour,

En fait, j'essaye de convertir un datetime (ligne 7) en varchar (ligne 16)

Je ne sais pas d'où vient le type timestamp (ligne 8) car je n'ai rien configuré en ce sens. Je pense que c'est l'assistant d'import SQL Serveur qui fait sa sauce sans me demander mon avis.

Vais je devoir me passer de l'assistant et rédiger le script d'import à la main ?
waxman2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 17h50   #9
 
Inscription : septembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 14
Points : -2
Points : -2
Merci par avance à qui me donnera un petit coup de main
waxman2 est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 25/10/2011, 18h14   #10
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
C'est donc que la colonne cible de la copie est une colonne de type varchar, qu'il suffit de changer en datetime

@++ ; )
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/10/2011, 09h27   #11
 
Inscription : septembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 14
Points : -2
Points : -2
Oui, c'est un varchar comme vous me l'avez conseillé dans votre post du 19
Citation:
Si vous exportez seulement la colonne qui contient une valeur datetime dans une colonne de type varchar(20) par exemple, et que vous tentez un CAST(maColonne AS datetime), vous allez finir par trouver où cela coince
Ai je mal compris ce que vous me demandez de réaliser ?

Merci
waxman2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 17h51   #12
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Je ne pense pas.

Transtypez donc la colonne cible en datetime :

Code :
1
2
ALTER TABLE dbo.maTableCible
ALTER COLUMN maColonne datetime
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 11h44   #13
 
Inscription : septembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 14
Points : -2
Points : -2
Je vais donc créer ma table manuellement car jusqu'à maintenant, j'utilisais l'assistant d'import SQL Serveur pour créer automatiquement la table..

Je vous tiens au courant

encore merci
waxman2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h05.


 
 
 
 
Partenaires

Hébergement Web