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 :

sqlcmd Message 4060, niveau 11, état 1,Message 18456, niveau 14, état 1,


Sujet :

MS SQL Server

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut sqlcmd Message 4060, niveau 11, état 1,Message 18456, niveau 14, état 1,
    Bonjour,
    Je travaille sur sql server 2005 express
    Je lance dans un fichier de commande Resultat_simulation.bat, une série de requêtes en utilisant sqlcmd qui appellent des procédures stockées différentes.
    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
    SET SIMUL_ID=8
    set GROUPE_PAYS=4
     
    SET SQLCMDUSER=goal_ps
    set SQLCMDPASSWORD=xyz
     
    set SQLCMDSERVER=pc147\sqlexpress
    set SQLCMDDBNAME=GOAL
    set SQLCMDCOLSEP=;
     
    sqlcmd  -W -Q "EXEC GOAL_uNomenclature_GAMME"
    sqlcmd  -W -Q "EXEC GOAL_uSIMUL_NOMENCLATURE_GAMME"
    sqlcmd  -W -Q "EXEC GOAL_uNOMENCLATURE_SCOPE_REGROUPEMENT_PAYS_C1_C2 %GROUPE_PAYS%" -o zzscope.csv 
    sqlcmd  -W -Q "EXEC GOAL_sRAPPEL_SIMULATION %SIMUL_ID%" -o zzRappel.csv
    sqlcmd  -W -Q "EXEC GOAL_uSIMUL_NOMENCLATURE_SUPER_LEGENDES_GLO %SIMUL_ID%" -o calcul_super_legende.txt  
    sqlcmd  -W -Q "EXEC GOAL_sCompteurs_SIMULATION %SIMUL_ID%"  -o compteurs.csv 
    sqlcmd  -W -Q "EXEC GOAL_sQUANTITATIF_SIMULATION_SCOPE %SIMUL_ID%"  -o Quantitatif.csv 
    sqlcmd  -W -Q "EXEC GOAL_sFREQUENTIEL_PAYS_SIMULATION %SIMUL_ID%"  -o frequentiel_mois.csv 
    sqlcmd  -W -Q "EXEC Goal_sCorrespondancesNomenclature_simulee %SIMUL_ID%"  -o correspondance_nomenclature_simulee.csv 
    sqlcmd -W -Q "EXEC GOAL_sREFERENCE_CONSOMMATION_simulation %SIMUL_ID%" -o REFERENCE_CONSOMMATION.csv 
    sqlcmd -W -Q "EXEC GOAL_sExemple_OFParNomenclature_EtOrigine_SIMULATION %SIMUL_ID%" -o EXEMPLE_OF_NOMENCLATURE.csv
    sqlcmd -W -Q "GOAL_sSIMUL_DETAIL_NOMENCLATURE_RECURRENTES %SIMUL_ID%" -o DETAIL_NOMENCLATURE_6.csv
    sqlcmd -W -Q "GOAL_sNOMENCLATURE_SIMULEE_MULTIPLE_NOMENCLATURE_MERE %SIMUL_ID%" -o NOMENCLATURE_SIMULEE_MULTIPLE_NOMENCLATURE_MERE.csv
    sqlcmd -W -Q "GOAL_sDETAIL_NOMENCLATURE_DISPARUES_APRES_SIMUL %SIMUL_ID%" -o DETAIL_NOMENCLATURE_DISPARUES_APRES_SIMUL.csv
    sqlcmd -W -Q "GOAL_sDETAIL_NOMENCLATURE_SANS_GAMME_APRES_SIMUL %SIMUL_ID%" -o DETAIL_NOMENCLATURE_INITIALE_SANS_GAMME_APRES_SIMUL.csv
    Dans quelques fichiers mais pas tous
    calcul_super_legende.txt
    compteurs.csv
    frequentiel_mois.csv
    Quantitatif.csv
    zzRappel.csv

    Au lieu du résultat attendu j'obtiens les message suivants.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Message 4060, niveau 11, état 1, serveur PC147\SQLEXPRESS, ligne 1
    Impossible d'ouvrir la base de données 'GOAL' demandée par la connexion. La connexion a échoué.
    Message 18456, niveau 14, état 1, serveur PC147\SQLEXPRESS, ligne 1
    Échec de l'ouverture de session de l'utilisateur 'goal_ps'.
    Précédemment j'utilisais l'utilisateur sa et j'avais parfois ce problème, et ça tombait en marche mais je ne sais pas bien comment.
    Voilà comment j'ai créé cet utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE LOGIN goal_ps WITH PASSWORD = 'xyz',
    		DEFAULT_DATABASE = GOAL   ,
    		DEFAULT_LANGUAGE = French,
    		CHECK_EXPIRATION = OFF,
    		CHECK_POLICY = OFF;
     
    CREATE USER user_goal_ps 
         FOR LOGIN goal_ps ;
     
    USE [GOAL]
    GO
    EXEC sp_addrolemember N'db_datareader', N'user_goal_ps'
    GO
    Puis j'ai donné le droits grant execute sur toutes mes procédures stockées voici un exemple de la syntaxe utilisée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grant execute on GOAL_sCompteurs_SIMULATION to user_goal_ps;
    Bien évidemment xyz n'est pas le vrai mot de passe.

    Voilà ce que j'ai tenté,.
    J'ai donné les droits en utilisant sqlcmd user sa.

    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
    set REP_SECURITE="C:\data\Schneider\securite"
    set GRANT_FIC="grant_goal_ps1.sql"
    cd %REP_SECURITE%
    IF NOT ERRORLEVEL 0 GOTO :FIN_ERREUR
     
     
    SET SQLCMDUSER=sa
    set SQLCMDPASSWORD=toto
    set SQLCMDSERVER=pc147\sqlexpress
    set SQLCMDDBNAME=GOAL
    set SQLCMDCOLSEP=;
    sqlcmd -h-1 -i gen_grant_goal_ps.sql -o %GRANT_FIC% 
    IF NOT ERRORLEVEL 0 GOTO :FIN_ERREUR
    sqlcmd  -i %GRANT_FIC%  
    IF NOT ERRORLEVEL 0 GOTO :FIN_ERREUR
    pause 
    exit
     
    :FIN_ERREUR
    ECHO "!!!!!!!!!!Il y a eu une erreur!!!!!!"
    pause
    exit
    Cela s'est bien passé, mais quand j'ai relancé mon Resultat_simulation.bat j'ai eu les mêmes erreurs.
    J'ai ensuite exécuté le script grant_goal_ps1.sql dans sql server management studio puis j'ai relancé le batch Resultat_simulation.bat. Et c'est tombé en marche. Si vous avez des pistes, je prends, cela me fait perdre 1h au minimum à chaque fois ces bêtises.
    PS : Je ne peux pas utiliser d'autres outils que sqlcmd pour générer les fichiers csv car ils sont triturés dans excel par les utilisateurs et que la moindre ligne en plus ou la moindre , qui change dans les fichiers met le bazar.
    [edit]
    Dans le fichier errorlog
    il y a des lignes comme :
    2009-03-13 14:14:24.14 Erreur*: 18456, Gravité*: 14, État*: 16.
    [/edit]

    Cordialement
    Soazig

  2. #2
    Membre actif
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Points : 269
    Points
    269
    Par défaut
    Bonjour,
    Avez vous accordez le droit connect à votre utilisateur de base de données user_goal_ps?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Avez vous accordez le droit connect à votre utilisateur de base de données user_goal_ps?
    Pas que je sache
    Vous avez le script de création de l'utilisateur dans mon premier post, les autres autorisations que j'ai défini sont des grant execute.

    Et si je n'avais pas le droit de me connecter il n'y aurait pas la moitié des PS qui s'executeraient correctement, enfin je crois.
    Merci
    Soazig

  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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    C'est bizarre votre problème.
    Je viens de relever quelque chose dans votre script de création de connexion / utilisateur : pour moi il manque un USE GOAL avant le CREATE USER :

    CREATE LOGIN goal_ps WITH PASSWORD = 'xyz',
    DEFAULT_DATABASE = GOAL ,
    DEFAULT_LANGUAGE = French,
    CHECK_EXPIRATION = OFF,
    CHECK_POLICY = OFF;
    GO
    USE GOAL;
    GO
    CREATE USER user_goal_ps
    FOR LOGIN goal_ps ;
    Échec de l'ouverture de session de l'utilisateur 'goal_ps'.
    Cette erreur ressemble à celle que l'on obtient lorsqu'on tente de se connecter à une instance de SQL Server avec soit un mauvais login soit un mauvais mot de passe ...

    @++

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Cette erreur ressemble à celle que l'on obtient lorsqu'on tente de se connecter à une instance de SQL Server avec soit un mauvais login soit un mauvais mot de passe
    Oui mais malheureusement ce n'est pas le cas, sinon, cela ne marcherait pas avec les autres PS.
    J'ai discuté avec un collègue qui m'a dit que si ça se trouvait, SQL server avait du travail de fond à faire après l'exécution de mes PS, et que pendant ce temps là il n'était pas disponible,j'ai donc rajouté des temporisations entre chaque appel.
    Et on verra si ça retombe encore en panne, lundi.

    Le principe des procédures stockées est :
    Si ça commence par GOAL_u c'est de la mise à jour des updates.
    Si ça commence par GOAL_s c'est des select.

    en suivant l'idée de mon collègue on pourrait penser que après les 3 premières procédures qui font de la mise à jour, SQL server a besoin de souffler. Et souffle donc en n'acceptant pas les 5 procédures stockées suivantes.

    Une petite précision , j'utilise SQLserver Express sur un PC portable ordinaire qui fait client et server!.

    Malgré tout si vous avez d'autres idées, je prends.
    J'aimerai bien avoir des certitudes.
    Cordialement
    Soazig

  6. #6
    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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    sur un PC portable ordinaire qui fait client et server!
    Est-ce que vous lancez le batch alors que le PC fait office de serveur ?
    Il est effectivement probable que vous ayiez un taux d'occupation CPU important, mais surtout que vous ayiez de la contention au niveau de votre disque dur.
    Mais pour moi, cela n'explique pas que vous ayez des "déconnexions" ...

    @++

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    En fait quand je dit client et serveur , c'est un abus de langage, tout tourne sur le pc portable non relié au réseau. SQL server express 2005 comme base de données, et les seuls appels c'est moi qui les fait (soit par management studio soit par sqlcmd, parfois bcp).
    En général lorsque je lance le batch j'en profite pour mettre à jour la documentation sur traitement de texte sur le même portable, et il n'y a aucune autre requête sur la base de données que le batch en question.

    Cordialement
    Soazig

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Juste un petit mot pour dire que ce n'est pas retombé en panne aujourd'hui (3 lancements du batch). Mais comme ce n'était pas un bug systématique cela ne signifie pas que l'ajout de temporisation a joué.
    A+
    Soazig

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Avec la temporisation Sleep de gnuwin
    http://gnuwin32.sourceforge.net/packages.html entre chaque appel sqlcmd cela n'est plus tombé en panne.
    Comme j'ai probablement fini de travailler sur le projet je vais passer le sujet en résolu.
    A+
    Soazig

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

Discussions similaires

  1. [WD17] Message d'erreur lors du code pour un enchainement d'état
    Par Xipotera dans le forum WinDev
    Réponses: 3
    Dernier message: 13/11/2012, 10h58
  2. Adapter le niveau de verbosité des messages
    Par gvdmoort dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 05/09/2012, 13h26
  3. [Javamail] Niveau de priorité des messages
    Par Rei Angelus dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 20/05/2009, 15h54
  4. Vider des tables à la fermeture d'un état sans message
    Par Guillaume 78 dans le forum VBA Access
    Réponses: 7
    Dernier message: 28/09/2008, 21h01
  5. Réponses: 4
    Dernier message: 26/04/2007, 10h57

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