Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1722 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL Server][Gestion de fichier] Ouvrir lire créer un fichier via SQL?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL Server][Gestion de fichier] Ouvrir lire créer un fichier via SQL?

n°1583725
Clarkent
Musclor le shérif de l'espace
Posté le 08-07-2007 à 15:26:37  profilanswer
 

Hello,
 
J'ai besoin de créer un petit module qui se lancera à heure régulière pour executer une requete et créer un fichier, voir plus tard d'executer une commande pour envoyer ce fichier a un serveur.
 
Ce meme petit module devra ensuite etre capable de lire le fichier accusé réception.
 
Le fichier a créer est tout simplement un fichier créé en retour d'un select, donc pas grand chose de particulier.
 
Mais voila, je ne vois pas comment via Transact SQL il est possible de creer lire ouvrir un fichier texte ?
Si ce n'est pas possible, alors comment faire ? Créer par exemple une appli en ligne de commande qui sera exécutée régulièrement ? c'est la seule alternative que je vois, mais l'on m'a soutenu que transact SQL etait capable de faire tout ca tout seul.
 
Comment pourrai je eventuellement utiliser les DTS de sql server ?
 
Merci.

mood
Publicité
Posté le 08-07-2007 à 15:26:37  profilanswer
 

n°1583741
MagicBuzz
Posté le 08-07-2007 à 18:29:49  profilanswer
 

tu lances un SQL+ depuis un batch, et tu récupère la sortie.
ou alors tu lances toujours un SQL+ depuis un batch, le sql lancé utilise la commande SPOOL afin d'écrire le résultat dans un fichier.
 
mais évite d'écrire dans un fichier à partir du SQL.
 
effectivement, SQL+, tu peux le lancer de n'importe où, et récupérer un fichier de sortie en local, sans te soucier d'éventuels problèmes de droits.
alors que si c'est SQL qui écrit dans un fichier, tu seras limité au serveur à un chemin sur un lecteur réseau, et en plus tu t'exploses à des problèmes de droits (les process d'Oracle doivent tourner avec un compte local restreint)

n°1583745
Clarkent
Musclor le shérif de l'espace
Posté le 08-07-2007 à 18:47:18  profilanswer
 

merci ;).
 
Mais bon la redirection du flux de sql +, implique un batch, et implique une tache planifié ailleurs que dans sql serveur. Si c'est le cas je ferai une appli console.
 
Par contre si y a un moyen d'ecrire et lire un fichier avec le sql dans une procédure stockée, cela m'interesserait plus dans un premier temps, malgré les problèmes de droit que cela peut poser.
 
Mais je ne vois nul part de package a integre pour faire cela, ou alors il faut que j'écrive dans un autre script ?
 
Donner les droits a l'utilisateurs qui lance sql serveur ca me derange pas trop.
 
Dans sql serveur 2005 il est possible d'avoir des proc stock en .net, ca pourrait le faire j'imagine encore plus facilement, non ?

n°1583758
MagicBuzz
Posté le 08-07-2007 à 21:09:02  profilanswer
 

Arf, oui, tu parlais de transact sql, donc de sql server (mélangé avec pl sql d'oracle). m'enfin le problème reste le même.
 
isql.exe et osql.exe permettent tous deux d'exécuter des commandes sql et de loguer le résultat dans un fichier de spool.
 
sinon, effectivement je ne vois rien qui te permette de faire ça sans SQL Server 2005.
 
a la limite, à grand coups de bidouilles avec xp_cmdshell, mais il est désactivé par défaut, car bien trop dangereux.

n°1583778
Clarkent
Musclor le shérif de l'espace
Posté le 08-07-2007 à 23:15:17  profilanswer
 

MagicBuzz a écrit :

Arf, oui, tu parlais de transact sql, donc de sql server (mélangé avec pl sql d'oracle). m'enfin le problème reste le même.
 
isql.exe et osql.exe permettent tous deux d'exécuter des commandes sql et de loguer le résultat dans un fichier de spool.
 
sinon, effectivement je ne vois rien qui te permette de faire ça sans SQL Server 2005.
 
a la limite, à grand coups de bidouilles avec xp_cmdshell, mais il est désactivé par défaut, car bien trop dangereux.


ca pour l'invité ligne de commande je comprends tres bien que ce soit SQL+ ou autre, mais je n'aime pas trop cette soluce car si c'est pour balancer une ligne de commande je prefere autant créer une application .net que je lancerai via un batch. Et comme tu dis il y a xp_cmdshell, mais d'apres ce que j'ai compris en cas de plantage c'est tout le server qui plante, et ca euh je pense que si ca arrive j'ai le big boss sur le dos 2 minutes apres :o.

n°1583857
MagicBuzz
Posté le 09-07-2007 à 09:33:25  profilanswer
 

Nan, mais très franchement, des bat en ligne de commande c'est loin d'être la mort :o
 
Au pire, effectivement, tu peux même te faire une table qui contient le nom des scripts à lancer, et exécuter ces derniers à l'aide d'un xp_cmdshell.
 
Faire un prog .NET juste pour effectuer un extract sous forme de fichier texte d'une requête, c'est une perte de temps, et tu ne gagneras rien niveau fonctionalités.
 
N'aie pas peur des *.bat, c'est monnaie courante. Suffit de voir tout le bordel que les admins collent dans le cron d'un Unix pour se rendre compte que c'est au contraire une solution à la fois courante et efficace.
 
Les jobs de SQL Server doivent se limiter à des oppérations uniquement au niveau de la base (maintenance, backups, etc.).

n°1583872
Clarkent
Musclor le shérif de l'espace
Posté le 09-07-2007 à 10:07:31  profilanswer
 

et t'en penses quoi des DTS ?
 
Bein c'est pas un simple extract, y a une mise en forme et derriere il y a un traitement d'un fichier résultat.
Donc si je me fais le fichier a envoyer puis le fichier résultat je vais pas l'écrire 2 progs avec deux langages différents.
 
Mais sinon oui j'admet les bat et autre commande du genre bein c'est pas mon trip, les admins c'est leur dada sûrement mais je suis pas admin ;). Enfin je vais explorer cette solution également.

n°1583896
MagicBuzz
Posté le 09-07-2007 à 11:01:23  profilanswer
 

En lot DTS aussi tu dois effectivement pouvoir faire un extract.
 
Par contre ça fait une éternité que j'y ai pas touché vu que j'utilise SQL Server Express, et qu'il n'a pas le module pour faire des DTS ;)

n°1602420
dzk34
Posté le 22-08-2007 à 15:42:57  profilanswer
 

bonjour,  
j'utilise des lots dts, chaque jour, pour exporter des données dans des fichiers, et je voudrais que chaque fichier prenne la date du jour comme nom
 
Comment faire?
 
dans le wizard d'export DTS, on peut seulement lui dire un nom de fichier

n°1602440
Clarkent
Musclor le shérif de l'espace
Posté le 22-08-2007 à 16:00:11  profilanswer
 

Bein en fait j'ai utilisé xp_cmdshell :(, pas le choix et déjà utilisé ici.
Donc je fais avec et la tu spécifies le nom que tu veux.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL Server][Gestion de fichier] Ouvrir lire créer un fichier via SQL?

 

Sujets relatifs
Scritp FTP qui lit un fichier .[AS3]gestion d'évènement [RESOLU] mais autre problème
[SQL et PHP] Relier des données dans une tablecomment lire un fichier sol
creer un script a partir des valeurs d'un fichierParser un fichier simple en C++
[Hibernate SQL] Rownum et Order bytrouver un fichier et supprimer les autres
Plus de sujets relatifs à : [SQL Server][Gestion de fichier] Ouvrir lire créer un fichier via SQL?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR