Strumenti Utente

Strumenti Sito


it:renameissue

eeRis Sprinkler v.1.1.00
per Microsoft Dynamics NAV 2016 / NAV 2017 / NAV 2018 / Dynamics 365 Business Central on-prem

Punti di attenzione sul RENAME

Per il caso di RENAME è stato riscontrato un comportamento particolare e che potrebbe causare la creazione di log di errori (falsi positivi): vi segnaliamo la casistica in attesa di trovare una soluzione.

Gestione dell'integrità referenziale in caso di RENAME

La gestione del RENAME è particolare, in quanto oltre alla normale transazione NAV e dal codice presente nei trigger OnRename, che sono normalmente gestiti da Sprinkler, NAV esegue applicativaente anche tutte le operazioni di gestione dell'integrità referenziale: per esempio, se viene effettuato il rename della chiave di un Cliente, vengono aggiornati applicativamente i campi referenziati degli ordini, delle fatture e così via.

Purtroppo questa gestione ha un effetto collaterale per il metodo di rilevamento delle modifiche utilizzato da Sprinkler: in particolare, Sprinkler rileva e segnala al sistema remoto sia l'operazione di RENAME (come prima transazione) sia tutte le conseguenti operazioni di MODIFY o RENAME sugli altri record, che non sono distinguibili dalle normali operazioni di MODIFY o RENAME, come ulteriori transazioni.

Caso RENAME + MODIFY: il sistema di destinazione riceve una segnalazione di RENAME e la replica direttamente, scatenando già automaticamente la fase di gestione dell'integrità referenziale: i successivi MODIFY saranno a questo punto inutili, ma non saranno comunque segnalati come errore.

Caso RENAME + RENAME: si genera un problema quando il campo modificato è referenziato da una chiave. Pensiamo per esempio di avere in replica sia la tabella [Customer] che la tabella [Customer Bank Accont]: in questo caso, la chiave [No.] di [Customer] è referenziata dal campo [Customer No.] della chiave di [Customer Bank Account]. Se rinominiamo un Cliente, quando il sistema Target applicherà il primo RENAME effettuerà in automatico anche un RENAME delle righe della [Customer Bank Account] di quel Cliente.

Sprinkler in questo caso segnalerà un RENAME del Cliente e un RENAME di un record corrispondente della [Customer Bank Account]. Il secondo RENAME però non troverà tramite la chiave il record cercato, perché già rinominato direttamente da NAV durante l'importazione del primo RENAME, e segnalerà un errore. Questo errore verrà inserito nella tabella [Data Distrib. Import Error] con la segnalazione del fatto che il record da rinominare non esiste: in realtà l'operazione è stata portata a termine correttamente, ma potrà essere complicato riuscire a interpretare cosa sia successo.

it/renameissue.txt · Ultima modifica: 2017/09/29 12:22 (modifica esterna)