Site icon Gioxx.org

ServiceDesk Plus 15120: errore REQ:2002 durante l’aggiornamento

Errore su microsoft.ace.oledb.12.0? Colpa dell'Access Runtime, si risolve in pochi clic

Mi sono ritrovato davanti a questo preciso identico errore durante un tentativo di aggiornamento dalla versione 15100 (15.1 Build 15100, a voler essere pignoli) alla 15.1 Build 15120 di ServiceDesk Plus su uno dei nostri server:

Giusto per dovere di cronaca: l’immagine non è mia perché non ho fatto screenshot quando mi sono ritrovato davanti all’errore.

A quanto pare, però, non sono stato certo l’unico. Qui c’è un thread sul forum ufficiale del prodotto con diverse altre persone che hanno rilevato la stessa anomalia: pitstop.manageengine.com/portal/en/community/topic/error-req-2002. Fortunatamente, in un intervento all’interno della discussione, c’è anche la causa del problema:

This issue occurs due to data discrepancy. Follow the steps outlined below and then proceed with the upgrade. Ensure to take a backup before executing the update queries in the database.

Verifica e soluzione

Dovrai quindi collegarti al database utilizzato dal tuo SDP (nel mio caso Postgres, perciò help.servicedeskplus.com/introduction/setting_up_database.html$connect%20to%20pg%20sql) e lanciare questa select:

select * from requestnotification n join notify_workorder nw on n.notificationid = nw.notificationid join requestnotificationtodesc nd on nd.notificationid = n.notificationid where nd.attachmentid is not null and nd.attachmentid not in (select attachmentid from sdeskattachment);

Se ottieni dei risultati, procedi lanciando ulteriori due query:

select * from requestresolution where attachmentid is not null and attachmentid not in (select attachmentid from sdeskattachment);
select * from workordertodescription where attachmentid is not null and attachmentid not in (select attachmentid from sdeskattachment);

Solo ed esclusivamente se la prima query restituisce dei risultati (almeno uno) e nessuna delle due successive query ne mostrano (quindi la query due e tre devono restituirti 0 righe coinvolte), allora potrai risolvere il problema lanciando questa modifica:

update requestnotificationtodesc set attachmentid = null where attachmentid is not null and attachmentid not in (select attachmentid from sdeskattachment);

Se, invece, una delle due query (o entrambe) successive alla prima dovessero restituire risultati, dovrai contattare il supporto di Manage Engine per ottenere supporto più specifico e attinente al tuo caso. Ti consiglio di fare un salto nel thread a chiedere una mano o contattare il supporto direttamente tramite i canali più che conosciuti (ticket da area privata o e-mail al solito indirizzo comune di supporto che è disponibile anche nelle informazioni prodotto).

Se la prima query non va in porto

Non è colpa della query, ma quasi certamente del code page della console. Sei incorso in un carattere “invisibile” nei dati: la sequenza 0xE2 0x80 0x8B è lo Zero-Width Space (U+200B). La console/psql su Windows sta tentando di convertirlo in WIN1252 e fallisce. Che poi è un po’ quello che dice subito il prompt stesso una volta autenticati al database, e io ci sono cascato ugualmente:

Per aggirare l’ostacolo dovrai uscire dalla console di Postgres (quit), quindi rientrare assicurandoti però di usare UTF-8 in console e in Postgres:

chcp 65001
set PGCLIENTENCODING=UTF8
psql.exe -U sdpadmin -p 65432 -d servicedesk

Ora potrai copiare e incollare la query che ti ho riportato per la verifica del problema (e pure le altre).

#KeepItSimple

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

Exit mobile version