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.
Dans quelques fichiers mais pas tous
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
calcul_super_legende.txt
compteurs.csv
frequentiel_mois.csv
Quantitatif.csv
zzRappel.csv
Au lieu du résultat attendu j'obtiens les message suivants.
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.
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'.
Voilà comment j'ai créé cet utilisateur :
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
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
Bien évidemment xyz n'est pas le vrai mot de passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part grant execute on GOAL_sCompteurs_SIMULATION to user_goal_ps;
Voilà ce que j'ai tenté,.
J'ai donné les droits en utilisant sqlcmd user sa.
Cela s'est bien passé, mais quand j'ai relancé mon Resultat_simulation.bat j'ai eu les mêmes erreurs.
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
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
Partager