Tranfert de données DBF => SQL 2008

rao64 Messages postés 11 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 17 mars 2011 - 14 mars 2011 à 15:21
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 - 18 mars 2011 à 15:11
J'utilise VFP 9 sp2 pour faire des travaux ponctuels de contrôle sur des données.
Actuellement je cherche à migrer des DBF vers une base SQL server 2008 en utilisant assistant de migration.
L'installation de l'ODBC et les options de VFP9 ont été fait selon le tutorial suivant : http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000422

Tout se passe ok jusqu'à la dernière étape lors que le Msg suivant apparait :
"[i]the upsizing wizard could not set the SQL database to proper compatibility level for upsizing
In order to upsize VFP must set the compatibility level of the target sql database to 6.5
this is done by calling the sp_dbcomptlevelstored procédure on sql server"/i

J'ai ramé un bout de temps sans résultat, pouvez vous me mettre sur une piste ?

j'ai aussi téléchargé VFP9SP2 FR upsizingwizard SRC.zip sur le site http://vfpx.codeplex.com/releases/view/12819 selon les conseils de http://www.foxprofr.com/forum/sujet-TRANSFERE-DONNEES-VERS-SQL-2005_1287202.aspx.

Ce package est il plus récent ? existe t-il des instructions d'installation ?

J'ai aussi tenté de migrer "à la main" par programme. La difficulté c'est que mes tables ont de nombreuses colonnes et je ne parvient pas à créer la table comme ont pourrait le faire sur une table VFP avec
=AFIELDS(mstru)
...
wr=SQLEXEC( nconnect, 'CREATE TABLE fact from array mstru' )

Est-ce à dire que l'option from array est propre à VFP et qu'avec SQL server il faut déclarer littéralement la structure ? (ce que je crains) ?

D'une manière plus générale, quelles sont les commandes que l'on peut "passer" par SQLEXEC ? Il semble que l'aide de VFP9 ne fasse état que de celles prévues pour une base VFP en "mode SQL" et non celles compatibles avec SQL Serveur.

En vous remerciant par avance si vous avez un peu de temps à m'accorder.

Je fais parti des anciens utilisateurs de VFP et suis navré du jeté de l'éponge fait pas MS.

Cordialement
Fabien

7 réponses

michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
14 mars 2011 à 16:42
Bonjour Fabien,

Je te confirme qu'il faut utiliser le UpsizingWizard disponible sur CodePlex (celui que tu as téléchargé). C'est moi qui traduit le wizard d'origine, et j'en ai profité pour corriger les quelques bug qui y trainaient..., et qui empéchaient la compatibilité SQL2008

à ma connaissance, ce package fonctionne ; si tu as des questions sur son utilisation, n'hésite pas à demander ici.

Si toutefois tu choisissais de migrer tes structures à la main, alors je te conseille de passer par un GenDBC pour obtenir un code de crétaion des tables qui soit "presque" utilisable dans SQL. Attention, hein, j'ai bien dit PRESQUE prépare-toi à avoir pas mal de retouches à y faire.

Une fois que tes données seront sur SQL, tu as 3 possibilités dans VFP9 pour les consommer. Soit tu utilises des vues distantes, soit tu utilises les SQL pass-through (les SQLEXEC), soit tu utilises des CursorAdapter. Je peux t'aider dans ces 3 directions, à ta demande.

Je ne comprends pas ce que tu veux dire par
"Il semble que l'aide de VFP9 ne fasse état que de celles prévues pour une base VFP en "mode SQL" et non celles compatibles avec SQL Serveur."
Dans tous les cas (vues, SPT, CurAd), les ordres sont envoyés au serveur et doivent être conforme à la syntaxe du serveur. Que veux-tu dire? quel est ton problème?

Est-ce que tu peux venir aux Rencontres AtoutFox 2011 à Montpellier (France) les 24 et 25 mars? On parlera de tout ça, bien sur, et je pourrais te montrer des techniques de migrations (autant pour migrer tes données que tes applications)
0
rao64 Messages postés 11 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 17 mars 2011
14 mars 2011 à 19:29
Bonsoir Michel,

merci, une nouvelle fois, de bien vouloir me "débloquer".
Le nouveau wizard de migration affiche le meme Msg en français mais poursuit et migre les données (semble t-il car 'est en cours).

En ce qui concerne ma seconde question, visiblement imprécise, je voulais savoir si la table gérée par SQL serveur peut être consultée principalement par un select ou par d'autres syntaxes comme REPLA, peut on aussi "dérouler" la table par un scan / endscan..?

D'où ma question sur les commandes fox compatibles qui sont si je te comprends celles qui figure dans le help de SQL serveur puisque via SPT VFp ne fait que le "passe-plat". C'est bien ça ?
Dommage que l'intégration ne soit pas plus poussée. MS avait peut être pas envie d'investir plus ?

En ce qui concerne les journée Atoufox, c'est envisageable et je te remercie pour ta proposition même si je crains d'être un utilisateur suffisamment atypique pour que mon utilisation basique ne me permette pas de suivre les débats.

Cordialement
Fabien
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
14 mars 2011 à 20:59
Bonsoir Fabien,

Quand tu migres tes structures de données vers SQL, il est préférable de créer la database dans SQL avant le process de migration. en effet, il y a des réglages spécifiques qui ne sont pas corrects dans le wizard (faudrait que je reprenne le source de Microsoft, pour voir si je peux changer ça ).

Entre autres, il faut créer le database en compatibilité 2008, et aussi le tailler assez grand pour ne pas avoir à subir de croissance pendant la migration (risque de timeout et d'arrêt du wizard, qui perd la connexion). Et aussi mettre ce database en mode de récupération simple (et le passer dans le mode souhaité après que la migration des données soit entièrement finie de façon satisfaisante).
Tous ces réglages, tu les fais dans SQL Server Management Studio (l'interface d'administration fournie par Microsoft).

Attention, il y a des options à ne pas ignorer dans le Wizard :la plus importante concerne la création des clés primaires! Si tu as des règles d'intégrité référentielle dans ton database VFP, choisis la RI par contrainte structurelle.
Pour l'essentiel, tu peux te référer à ce que j'ai présenté en 2006 aux Rencontres AtoutFox.
Pour ta seconde question, il faut bien comprendre que tu ne traites jamais directement les données qui sont dans SQL Server, tu passes obligatoirement par un intermédiaire (vue, SPT, CurAd) qui en VFP, crée un cursor VFP.
Pour obtenir ce curseur local, tu vas utiliser de la syntaxe SQL Server (puisque cette syntaxe sera compilée et exécutée par le serveur SQL)
Pour manipuler le curseur local, tu peux utiliser toute la syntaxe VFP habituelle.

Quant aux Rencontres AtoutFox, je te rassure, tous les utilisateurs sont atypiques, il n'y a aucune raison pour que tu ne puisses pas suivre les conférences, et surtout surtout, rencontrer d'autres développeurs Fox qui te parleront de leur migration vers SQL.

à bientot ici même ou en live à Montpellier
0
rao64 Messages postés 11 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 17 mars 2011
15 mars 2011 à 09:35
Bonjour Michel,

j'ai laissé mouliner l'upsizing et ce matin j'ai
err 1 fichier ... n'existe pas
err 13 err dans creattableqsl alias field introuvable

l'assistant migration est un rebel qui ne veut pas se fermer :)

je reviens donc à mon idèe d'origine :
nbrchamps = afields(structure dbf d'origine)
puis utilisation de ces info pour
for i = 1 to nbrchamps
alter tablesql add etc

Pour faire l'append des données ?
Je pense ouvrir la table (sql) ainsi créée, y faire mes append en masse et refermer la table.

Pour Montpellier on va voir

Merci encore... j'ai encore un très vaste potentiel de progression ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
16 mars 2011 à 23:35
Bonsoir,

où as tu ces erreurs?

pourrais-tu nous montrer des copies d'écrans de chaque étape de l'assistant, que je puisse vérifer tes options?
à l'étape n°2, quelle type de connexion as-tu choisi?
à l'étape n°4, comment as-tu mappé les champs? as-tu mis des timestamp sur les tables qui avaient des memo? as-tu ajouté des identity column?
à l'étape n°5, quelles options avancées as-tu sélectionné? as-tu demandé la génération de rapport de migration? pour cette étape, je conseille toujours de faire une pré-migration, sans le transfert des données (structure seule), sans rediriger les vues, en demandant de la RI déclarative
et à l'étape n°6, ne faire que le script, prendre ensuite le temps de lire et analyser les rapports générés, et de relancer l'assistant jusqu'à ce qu'il n'y ait plus aucune erreur d'exécution ni de rapport. Alors seulement, on peut faire la migration complète.

si tu fais comme je te dis, tu verras que ce fameux script généré, c'est justement ce que tu veux faire à la main.

Quant à ouvrir la table SQL, ça ne veut rien dire, on n'ouvre pas une table SQL, on donne à SQL Serveur un ordre à exécuter sur une table ou un ensemble de tables. Append n'existe pas en SQL.
Migre tes structures, et quand tes tables (vides) seront OK sur ton serveur SQL, on reparlera des différentes techniques pour y transférer les données de Fox. Ou bien on en parle la semaine prochaine aux Rencontres AtoutFox...
0
rao64 Messages postés 11 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 17 mars 2011
17 mars 2011 à 18:13
Bonjour,

contrairement à ce que je t'ai écris par mail direct (because pièce jointe) j'ai re-lancé cette après midi avec option migration seule et ai obtenu plusieurs dbf

Comment exploiter cela et déterminer si une anomalie s'est produite ?

J'ai en effet un script.dbf avec un joli creat table.

je vais même finir par comprendre

A+
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
18 mars 2011 à 15:11
Bonjour,

une des tables créées doit s'appeler erreurs_uw, elle contient les infos sur les erreurs survenues dans la migration

Si tu as demandé les rapports dans l'étape n°5, le wizard a du te créer un projet VFP contenant les dbf dont tu parles, mais aussi des reports, qui te donnent une lecture plus simple des dbfs en question.

Concernant l'étape 4, à la lecture du doc que tu m'as envoyé, il faudrait savoir si la table d'origine en question a ou non un index Primaire. Si oui, alors il a été migré comme PK (attention, une clé et un index, ça n'est pas du tout la même chose en SQL). Si non, alors tu aurais pu demander la creation d'une Identity column dans cette étape 4, et elle aurait été désignée comme PK dans la migration.
Et dans les options avancées de l'étape 5, tu aurais indiqué que les PK devaient être Clustered.

Sinon, j'ai remarqué sur tes copies d'écran que le Task Pane Manager était réduit, mais présent pendant le Wizard. Attention, j'ai observé parfois des problèmes, il vaut mieux fermer ce task pane avant de lancer le wizard d'upsizing.

On reagrde tout ça aux Rencontres AtoutFox à Montpellier la semaine prochaine
0
Rejoignez-nous