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

Développement SQL Server Discussion :

Passer des paramètres BATCH pour l'exécution d'une procédure stockée


Sujet :

Développement SQL Server

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut Passer des paramètres BATCH pour l'exécution d'une procédure stockée
    Bonjour tout le monde,

    comment faire pour exécuter une procédure stockée qui prend les paramètres d'un fichier BATCH de paramétrage.

    Voici mon fichier PARAMETRAGE.BAT :

    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
    SET __BASE_CLIENT=SUADEO_GFMPROD_ORI_PARTIEL
    SET __CHEMIN_RESTO=D:\TMP\
     
    SET __BASE_SUADEO=SUADEO_ADMINISTRATION_TMP
    SET __FIC_BACKUP=SUADEO_ADMIN_31_10_2010.BAK
    SET __CHEMIN_BACKUP=D:\SUADEO_ADMIN--LOG--DATA\
     
    ECHO %__CHEMIN_SQL% 
    ECHO %__BASE_CLIENT% 
    ECHO %__CHEMIN_RESTO% 
    ECHO %__BASE_SUADEO% 
    ECHO %__FIC_BACKUP% 
    ECHO %__CHEMIN_BACKUP%
     
    PAUSE>NUL
    Voici l'appel de la procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    USE TEMPDB
    GO
    EXEC MAJ_BD_SUADEO	
     
    	%__BASE_CLIENT%,
    	%__BASE_SUADEO%,
    	%__FIC_BACKUP%,
    	%__CHEMIN_BACKUP%,
    	%__CHEMIN_RESTO%
    merci pour votre aide.

    ash_rmy.

  2. #2
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Si les paramètres
    %__BASE_CLIENT%,
    %__BASE_SUADEO%,
    %__FIC_BACKUP%,
    %__CHEMIN_BACKUP%,
    %__CHEMIN_RESTO%
    Changent rarement tu peux les mettre en dur dans la procédure stockées.

    Par contre si ces paramètres sont dynamiques, tu peux utiliser

    xp_cmdshell pour lancer dans un même bloc d'instruction le .bat et la procédure stockée MAJ_BD_SUADEO

    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    merci Zinzineti.

    les paramètres vont en fait très souvent changer. je voudrais en fait séparer le fichier de paramétrage de la procédure stockée pour ne pas les mettre dans un seul bloc d'instruction.

    merci de votre aide.

    ash_rmy.

  4. #4
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Citation Envoyé par ash_rmy Voir le message
    merci Zinzineti.

    les paramètres vont en fait très souvent changer. je voudrais en fait séparer le fichier de paramétrage de la procédure stockée pour ne pas les mettre dans un seul bloc d'instruction.

    merci de votre aide.

    ash_rmy.
    le .bat est lancé par un programme (VB.NET, C#.NET, ...) ou bien par Windows Planificateur de tâches ?

    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    en fait, je clique juste sur un .BAT qui lancera le .BAT de paramétrage et l'appel de la procédure stockée.

    merci.

    ash_rmy.

  6. #6
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Utiliser sqlcmd avec l'option -v. Essayez avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sqlcmd -i script.sql -v __BASE_CLIENT="SUADEO_GFMPROD_ORI_PARTIEL"
    __CHEMIN_RESTO="D:\TMP\" __BASE_SUADEO="SUADEO_ADMINISTRATION_TMP"
    __FIC_BACKUP="SUADEO_ADMIN_31_10_2010.BAK" __CHEMIN_BACKUP="D:\SUADEO_ADMIN--LOG--DATA\"
    Votre fichier sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    USE TEMPDB
    GO
    EXEC MAJ_BD_SUADEO	
    	$(__BASE_CLIENT),
                 $(__BASE_SUADEO),
    	$(__FIC_BACKUP),
    	$(__CHEMIN_BACKUP),
    	$(__CHEMIN_RESTO)
    ++

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    Bonjour tout le monde,

    Merci Mikedavem pour ton message ! je l'ai testé mais il m'affiche le message d'erreur ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    message 102, niveau 15, état 1, serveur PC-DE-ASH_RMY\SQL2008, ligne 5.
    Syntaxe incorrect vers '.'.
    message 132, niveau 15, état 1, serveur PC-DE-ASH_RMY\SQL2008, ligne 7.
    l'étiquette 'D' a déjà été déclarée. les noms d'étiquettes doivent être uniques dans un traitement de requêtes ou une procédure stockée.
    que veut dire "étiquette D" SVP.

    Merci pour votre aide.

    ash_rmy.

  8. #8
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Autant pour moi, il y a un oubli dans le fichier sql. Il faut mettre les simple quote autour des variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    USE tempdb;
     
    EXEC MAJ_BD_SUADEO 
         '$(__BASE_CLIENT)',
         '$(__BASE_SUADEO)',
         '$(__FIC_BACKUP)',
         '$(__CHEMIN_BACKUP)',
         '$(__CHEMIN_RESTO)'
    ++

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    Merci Mikedavem. ça marche bien !

    ash_rmy.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/09/2008, 14h49
  2. Réponses: 0
    Dernier message: 30/09/2008, 01h14
  3. Passer des paramètres à l'URL de retour d'une action
    Par et.rond.et.rond dans le forum JSF
    Réponses: 2
    Dernier message: 03/08/2006, 23h03
  4. Accès non autorisé à l'exécution d'une procédure stockée
    Par celine33 dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/01/2006, 10h27
  5. Réponses: 3
    Dernier message: 23/03/2005, 11h28

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