[.Net] Parser T-SQL

cs_Mizuka Messages postés 66 Date d'inscription jeudi 4 août 2005 Statut Membre Dernière intervention 16 décembre 2009 - 11 déc. 2009 à 15:57
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 16 déc. 2009 à 19:38
Bonjour à tous !

J'écris cette lettre pour discuter sur la problématique suivante :

Ecrire une application qui lit un fichier contenant des instructions T-SQL & qui les exécute sur une base de données donnée.


Premièrement, existe-t-il déjà ce genre d'application ? Si oui, la question sera alors vite réglée :)

Si le premièrement n'est pas vérifié alors je souhaiterai discuter de la meilleure façon de développer ce type d'application. On peut également discuter de la technologie la plus appropriée pour ceux qui souhaitent !

N'ayant pas trouvé d'applications répondant à ma demande (ai peut-être -très- mal cherché), j'ai commencé les développements d'une application en VB.Net.

Les développements déjà réalisés étant très sommaires, reprendre le développement de cette application de zéro avec une technologie plus adaptée (performante ? :)) ne me dérangera pas le moins du monde. C'est d'ailleurs la deuxième fois que je commence le développement à la recherche de ce qui va le mieux.

Là où je bloque tout particulièrement, c'est sur la façon dont je pourrais isoler chaque requête. En effet, en T-SQL, il n'y a pas de délimiteurs tel qu'un point-virgule (";").
J'ai pensé m'appuyer sur les mots clé mais je ne sais par contre pas très bien comment m'y prendre.

Des remarques, suggestions, pistes, ... ?

Merci !

5 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
11 déc. 2009 à 20:03
Salut,

Tu peux exécuter les requetes avec osql
l'outil en ligne de commande de microsoft


un systeme par fichier peut faire l'affaire
exemple un fichier par version
ou un fichier par fonction
et un repertoire par version.

le programme lit chaque repertoire
et execute les scripts de chaque fichier
0
cs_Mizuka Messages postés 66 Date d'inscription jeudi 4 août 2005 Statut Membre Dernière intervention 16 décembre 2009
15 déc. 2009 à 09:13
Merci pour ta réponse ! J'vais me pencher sur oSQL et comment déployer tout le bousin :)

Par contre, concernant ce système de fichiers, la question est : comment créer ces différents fichiers ? A l'origine, je n'ai qu'un seul fichier. Si j'en avais plusieurs, je n'aurais pas ce même problème :)
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
15 déc. 2009 à 19:07
J'ai pas compris la fin de ton message.

Comment travailles-tu?

si tu as 1 fichier comment tu fais les MAJ
tu fais des alter ou des drop procedure a chaque livraison?
0
cs_Mizuka Messages postés 66 Date d'inscription jeudi 4 août 2005 Statut Membre Dernière intervention 16 décembre 2009
16 déc. 2009 à 09:16
Pour l'exemple le plus concret :
J'utilise souvent Database Publishing Wizard. C'est un mini soft qui permet d'extraire tout ou partie des tables d'une base de données en générant un script SQL. Si je demande à obtenir les données contenues dedans, il génère en plus une requête SQL par occurrence dans mes tables et par tables souhaitées.

Tu comprendras donc que cet unique fichier généré peut vite grossir. Il arrive alors que ce fichier ne soit plus négociable via SQL Server Management Studio car beaucoup trop lourd.

Je n'ai pas de listes exhaustives des situations où j'ai ces besoins mais souvent c'est pour rétablir sur ma plateforme de développement, ou de tests, une à plusieurs tables (généralement les données).

Et personnellement, je trouve ni propre, ni élégant de découper le fichier et de les exécuter ensuite chaque partie. Et encore moins rapide :)

Donc concrètement, ça n'est pas lié à la mise à jour des mes structures lors de déploiement de développement (maintenance, évolution, ...)

En espérant avoir été plus clair !

@tchaOo°
0

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

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
16 déc. 2009 à 19:38
OK,

Merci pour les precisions,
Je demandais pour ma culture ca?

Car les bases de données sont souvent mises à jour sur des environnements de production
et il ne faut pas détruire les données existantes et pouvoir faire une installation à partir de zero.

Exemple installation d'un nouveau client par exemple.

C'est pour ca que je parlais de script de mise à jour incrementale.

Le hic c'est que c'est plus long car il y a les structures de base (v0)
et apres les mises à jour (ajout/modif/suppression de table colonne vue et ps)
et de données de reférence.

Ce qui est interessant c'est de maintenir 2 - 3 fichiers
un pour la structure
et l'autre pour les données de reference.

Et maintenir un fichier pour la premiere installation et un fichier pour la mise à jour
mais le fichier de MAJ doit tenir compte en fonction de ton programme des saut de version
exemple un client a un programme version 2005 et veux la version 2009
mais il a pas acheter la version 2010
il faut que tu saches mettre la base à jour.

Il y a un autre qui fait bien les choses, c'est sqldatacompare et sqlcompare de redgate
il y a un aussi chez ems
mais ils sont payants.

Donc bon courage, mais la mise à jour des bases de données, est souvent complexe
car il faut penser à plusieurs cas et c'est pas évident
(surtout si il y a fusion de table ou eclatement de table)

bon courage
0
Rejoignez-nous