Bonjour à tous,

J'aimerai avoir une aide afin de gérer un Job qui doit durer plusieurs jours. J'interroge des tables de ma base MSSQL contenant dans des champs de contenu XML que je remets donc en forme etc.
Le problème est que tous les soirs nous avons une maintenance sur le serveur MSSQL de 21h à 2h environ. Cela entraine l'arrêt de mon Job, j'ai donc l'impossibilité d'aller jusqu'au bout.

Voici le message que j'obtiens :
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
 
Démarrage du Job Prod_B_Extract_Contenu_XML_2023_1 à 11:09 02/05/2024.
[statistics] connecting to socket on port 4035
[statistics] connected
Exception in component tDBInput_1 (Prod_B_Extract_Contenu_XML_2023_1)
java.sql.SQLException: Invalid state, the Connection object is closed.
	at net.sourceforge.jtds.jdbc.TdsCore.checkOpen(TdsCore.java:481)
	at net.sourceforge.jtds.jdbc.TdsCore.clearResponseQueue(TdsCore.java:767)
	at net.sourceforge.jtds.jdbc.JtdsStatement.reset(JtdsStatement.java:722)
	at net.sourceforge.jtds.jdbc.JtdsStatement.close(JtdsStatement.java:966)
	at easily_xml_specialites.prod_b_extract_contenu_xml_2023_1_0_1.Prod_B_Extract_Contenu_XML_2023_1.tDBInput_1Process(Prod_B_Extract_Contenu_XML_2023_1.java:2559)
	at easily_xml_specialites.prod_b_extract_contenu_xml_2023_1_0_1.Prod_B_Extract_Contenu_XML_2023_1.runJobInTOS(Prod_B_Extract_Contenu_XML_2023_1.java:4586)
	at easily_xml_specialites.prod_b_extract_contenu_xml_2023_1_0_1.Prod_B_Extract_Contenu_XML_2023_1.main(Prod_B_Extract_Contenu_XML_2023_1.java:4377)
[statistics] disconnected
 
Job Prod_B_Extract_Contenu_XML_2023_1 terminé à 21:54 02/05/2024. [Code de sortie  = 1]
J'ai bien essayé de mettre le code suivant dans un des mes composants tJava (dans la capture, tJava_5), mais rien n'y fait car une déconnexion à la base MSSQL a lieu, ce qui interrompt donc le Job.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
LocalTime currentTime = LocalTime.now();
LocalTime startTime = LocalTime.parse("21:00");
LocalTime endTime = LocalTime.parse("02:00");
if (!currentTime.isBefore(startTime) && currentTime.isBefore(endTime)) {
    long sleepTime = java.time.Duration.between(currentTime, endTime).toMillis();
    Thread.sleep(sleepTime);
}
Je vous joint une capture d'écran de mon Job.

Pourriez-vous m'aider à trouver une solution à ce problème ? Merci à tous par avance.

Nom : capture_job_mssql.png
Affichages : 174
Taille : 103,9 Ko