IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[MSSQL2000] - bcp.exe avec une requete de type FOR XML, ELEMENTS


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 11
    Points : 9
    Points
    9
    Par défaut [MSSQL2000] - bcp.exe avec une requete de type FOR XML, ELEMENTS
    Bonjour a tous,

    J'ai la procédure stockée suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE PROCEDURE SP_NMD_ESSAI AS
     
    	DECLARE @myCMD VARCHAR(8000)
    	SET @myCMD = 'bcp "SELECT myCol1 as CustomerID, myCol2 as CustomerName FROM DBmyTEST.dbo.tbl_customers Customer FOR XML AUTO, ELEMENTS" queryout \essai.txt -S SQLSRV2000 -U sa -P **** -c -r -t'
     
    	EXEC master..xp_cmdshell @myCMD
    GO
    J'obtiens les WARNINGS suivants :

    NULL
    Starting copy...
    SQLState = S1000, NativeError = 0
    Error = [Microsoft][ODBC SQL Server Driver][SQL Server]Warning: Server data (3046 bytes) exceeds host-file field length (0 bytes) for field (1). Use prefix length, termination string, or a larger host-file field size. Truncation cannot occur for BCP output files.
    En gros il semblerait que bcp.exe n'exporte le résultat de ma requête créant le XML que sur une seule ligne. évidemment, la ligne est trop petite. Du coup le fichier n'est non seulement pas exploitable mais il est également incomplet.

    Je pensais qu'en utilisant les options -c -r -t je ne rencontrerais pas ce type d'erreur. Il semblerait que la nature de la requête FOR XML AUTO soit à l’origine du problème.
    Quelqu'un a-t-il déjà rencontré / surmonté ce problème ? Devrais-je m’y prendre autrement pour créer mon fichier XML ?

    Par avance merci

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Le résultat d'un FOR XML est renvoyé sous forme de streams, potentiellement en plusieurs fois. Peut-être peux-tu réaliser un petit script en VBScript par exemple, qui va exécuter la requête, récupérer les streams, les encapsuler dans un noeud root, et l'enregistrer sur le disque.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

Discussions similaires

  1. Changer le nom d'une table sur SQL server avec une requete
    Par Oluha dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 01/02/2014, 23h35
  2. PB de chargement de combobox avec une requete
    Par bubu1905 dans le forum Bases de données
    Réponses: 9
    Dernier message: 23/03/2005, 16h14
  3. calculer une moyenne avec une requete externe
    Par allowen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2005, 16h02
  4. [ORACLE][SQL] procedure sous delphi avec une requete SQL
    Par nivet dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/11/2004, 13h43
  5. au secour probleme avec une requete...
    Par soufiane59 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/09/2003, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo