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

Outils SQL Server Discussion :

Utilisation de BCP sur une ressource réseau


Sujet :

Outils SQL Server

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Par défaut Utilisation de BCP sur une ressource réseau
    Bonjour,
    Dans le cadre d'un projet, je souhaite utiliser la commande BCP pour importer des données provenant d'un fichier csv stocké sur un emplacement réseau.

    Pour ce faire, j'utilise la commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE('master..xp_cmdshell ''bcp MABASE.dbo.TEXTRACT in \\DEV\APPLICATION\monfichier.csv -t ; -F 2 -U USERDEV -P USERDEV -c''');
    Le répertoire \\DEV\APPLICATION\ contenant monfichier.csv est accessible en lecture (Partage et sécurité) pour l'utilisateur "USERDEV". Par ailleurs, le compte USERDEV est à la fois un compte windows mais également un compte SQL SERVER.

    1er problème :
    Un message d'erreur est levé indiquant que le système n'a pu identifier le compte USERDEV.


    2ième problème :
    Lorsque j'exécute ma procédure stockée en tant qu'admin, j'ai le message d'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unable to open BCP host data-file
    .

    Je suppose qu'il s'agit d'erreur minimale mais je commence à me prendre violemment la tête.

    Merci par avance pour votre aide

  2. #2
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 67

    Informations forums :
    Inscription : Septembre 2009
    Messages : 68
    Par défaut
    Bonjour,

    Essaie de déterminer quel est le compte Windows qui exécute SQL-Server. et donc ta commande après EXECUTE. Ce n'est surement pas USERDEV.

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE('master..xp_cmdshell ''SET''')
    te donnera ce compte en face de USERNAME, si tu as le droit de lancer une telle commande.

    C'est ce compte qui doit pouvoir lire le fichier d'entrée et devrait pouvoir l'afficher avec un truc comme ça (à éviter s'il est trop gros).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE('master..xp_cmdshell ''TYPE \\serveur\dir\fichier''')
    Cordialement,

    Martinus

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Par défaut
    Bonjour,
    Merci pour cette réponse.

    Néanmoins, je pensais qu'il était possible de définir le compte à employer....

    @+

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    L'utilisateur que vous spécifiez dans la commande BCP est celui d'une base de données, c'est-à-dire l'utilisateur sous lequel la commande va être exécutée, au sens SQL Server uniquement.

    Pour lire sur un partage réseau, le compte se service SQL Server doit avoir les droits nécessaires d'accès, puisque c'est lui qui accède au fichier, par l'utilisateur

    @++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Par défaut
    Citation Envoyé par martinus45 Voir le message
    Bonjour,

    Essaie de déterminer quel est le compte Windows qui exécute SQL-Server. et donc ta commande après EXECUTE. Ce n'est surement pas USERDEV.

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE('master..xp_cmdshell ''SET''')
    te donnera ce compte en face de USERNAME, si tu as le droit de lancer une telle commande.

    C'est ce compte qui doit pouvoir lire le fichier d'entrée et devrait pouvoir l'afficher avec un truc comme ça (à éviter s'il est trop gros).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE('master..xp_cmdshell ''TYPE \\serveur\dir\fichier''')
    Cordialement,

    Martinus
    Tout d'abord, j'ai effectivement un acced denied (Normal)

    En ce qui concerne la première requête, j'obtiens les informations suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    ALLUSERSPROFILE=C:\Documents and Settings\All Users
     
    ClusterLog=C:\WINDOWS\Cluster\cluster.log
     
    CommonProgramFiles=C:\Program Files\Common Files
     
    CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
     
    COMPUTERNAME=MYCOMPUTER
     
    ComSpec=C:\WINDOWS\system32\cmd.exe
     
    FP_NO_HOST_CHECK=NO
     
    lib=C:\Program Files\SQLXML 4.0\bin\
     
    NUMBER_OF_PROCESSORS=8
     
    OS=Windows_NT
     
    Path=C:\Program Files\HP\NCU;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Prog
     
     
    ram Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE\Privat
     
     
    eAssemblies\;C:\WINDOWS\sysWOW64
     
    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
     
    PROCESSOR_ARCHITECTURE=AMD64
     
    PROCESSOR_IDENTIFIER=EM64T Family 6 Model 23 Stepping 6, GenuineIntel
     
    PROCESSOR_LEVEL=6
     
    PROCESSOR_REVISION=1706
     
    ProgramFiles=C:\Program Files
     
    ProgramFiles(x86)=C:\Program Files (x86)
     
    PROMPT=$P$G
     
    SystemDrive=C:
     
    SystemRoot=C:\WINDOWS
     
    TEMP=C:\WINDOWS\TEMP
     
    TMP=C:\WINDOWS\TEMP
     
    USERPROFILE=C:\Documents and Settings\Default User
     
    windir=C:\WINDOWS
     
    NULL
    Et je ne vois pas de notion d'utilisateur qui exécute la commande

  6. #6
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 67

    Informations forums :
    Inscription : Septembre 2009
    Messages : 68
    Par défaut
    Hello,

    Il faut alors (en t'adressant à la personne qui s'occupe du serveur, si ce n'est pas toi) regarder quel est le compte qui exécute le service Sql-Server. Il faut aller dans le gestionnaire de services et regarder les propriétés du service.

    Apparemment ce doit être actuellement un compte local, qui ne doit donc pas avoir accès à ton réseau.

    Si le fichier à lire ne se trouve pas sur le serveur de bases de données (ce qui est raisonnable), vous allez devoir choisir un autre compte, peut-être le créer pour cet usage. Ce devra être un compte global (qui soit dans le domaine) et qu'il puisse au moins lire le fichier.

    En espérant que cela t'aidera !

    Cordialement,

    Martinus

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Par défaut
    Merci pour cette réponse mais je ne vois pas l'information concernant l'utilisateur qui exécute la requête.

  8. #8
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 67

    Informations forums :
    Inscription : Septembre 2009
    Messages : 68
    Par défaut
    Bonjour,

    Tu dois trouver l'utilisateur (Windows) qui exécute le service Windows SQL-Server, pas exactement la requête.

    As-tu pu te connecter au serveur ?
    As-tu pu lister les services et trouver le service concerné ?

    Désolé, je n'ai pas de machine avec Sql-Server sous la main actuellement, et je ne peux pas t'envoyer de copie d'écran.

    A+

    Martinus

Discussions similaires

  1. Réponses: 11
    Dernier message: 24/03/2007, 16h01
  2. [PEAR] Ping sur une plage réseau
    Par patine31 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 26/02/2007, 12h08
  3. Réponses: 2
    Dernier message: 22/12/2006, 10h38
  4. Utilisation des Frames sur une Forms
    Par selmak7 dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/07/2006, 17h42
  5. [TChart] Comment utiliser le curseur sur une courbe ?
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 29/09/2005, 16h49

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