Bonjour,
La commande suivante marche parfaitement en ligne de commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
BCP "SELECT * FROM EXERCICES" queryout D:\Donnees\Doc_communs\WaveSoft\Bodin\FILENAME.csv -t; -S FDSSERVER\WAVESOFT -d BODIN -c -T
Elle n'a d'autre intérêt que d'essayer d'expliquer mon pb.

La Cde SQL suivante fonctionne elle aussi parfaitement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
DECLARE @SQL NVARCHAR(4000)
SET @SQL = 'BCP "SELECT * FROM EXERCICES" queryout D:\Donnees\Doc_communs\WaveSoft\Bodin\FILENAME.csv -t; -S FDSSERVER\WAVESOFT -d BODIN -c -T'
EXEC MASTER..XP_CMDSHELL @SQL
Le but est d'exporter le résultat d'une requête dans un fichier texte

Evidemment en production réelle la requête sera plus "évoluée"

Par exemple quand je veux introduire des données fixes à exporter cela ne marche plus

Comme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
BCP "SELECT '00001' FROM EXERCICES" queryout D:\Donnees\Doc_communs\WaveSoft\Bodin\FILENAME.csv -t; -S FDSSERVER\WAVESOFT -d BODIN -c -T
En ligne de commande : OK

Mais dans une requête SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
DECLARE @SQL NVARCHAR(4000)
SET @SQL = 'BCP "SELECT '00001' FROM EXERCICES" queryout D:\Donnees\Doc_communs\WaveSoft\Bodin\FILENAME.csv -t; -S FDSSERVER\WAVESOFT -d BODIN -c -T'
EXEC MASTER..XP_CMDSHELL @SQL
Message erreur :

Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '00001'.

Les cotes sont interprétées comme la fin de la variable et non comme faisant partie de son contenu

Donc les questions sont :
- comment faire passer ces valeurs fixes en paramètre de BCP
- comment faire passer également des variables, par exemple pour créer le nom de fichier en dynamique en fonction de la date.

Christophe