
Rimozione dei dati di istanze di relazione dal repository
Un'applicazione che utilizza le relazioni ha dati e schemi di relazione associati in un repository. Il repository è il database configurato per contenere i dati dell'istanza di relazione. Quando si disinstalla tale applicazione da un server di produzione, il server non rimuove lo schema di relazione e i dati dal repository. È necessario rimuovere manualmente lo schema di relazioni esistente. Quando si disinstalla tale applicazione da un server di sviluppo, lo schema e i dati vengono rimossi dal repository ad ogni arresto o avvio del processo dell'applicazione.
Quando si installa un'applicazione che contiene relazioni, il server crea gli oggetti dello schema del database corrispondenti che includono tabelle, indici, sequenze e procedure memorizzate. In fase di runtime, le tabelle vengono popolate con i dati dell'istanza di relazione. Se si disinstalla l'applicazione che contiene le relazioni, le tabelle e i dati dell'istanza non vengono rimossi dal database. La volta successiva che l'applicazione viene installata, i nuovi dati della relazione statica nell'applicazione non vengono popolati e se la definizione della relazione viene modificata, la tabella delle relazioni non viene ricreata. Ciò può causare errori.
Se si reinstalla l'applicazione con la stessa relazione, viene riutilizzato il vecchio schema. Tuttavia, se la definizione di relazione o ruolo viene modificata in modo da renderla incompatibile con lo schema esistente, il servizio di relazione genera un'eccezione e termina l'installazione della relazione. I log mostrano la seguente eccezione e messaggio:
RelationshipServiceException("table <tablename> already exists, but the table schema is different from current role definition")
La soluzione per questo problema consiste nel rimuovere manualmente le risorse dello schema di relazione esistenti (utilizzando gli strumenti forniti dalla piattaforma del database del repository) e quindi reinstallare l'applicazione.