Dopo alcuni test effettuati ho verificato che il sistema funziona in questo modo (dalla versione 5 alla 2009 ma credo valga anche le versioni precedenti)
Funzionamento indici NAV->SQL (se gestito flag Mantain sql index)
-se viene aggiunto un nuovo indice (da nav) -> lo crea su sql
-se viene rimosso un indice (da nav) -> lo cancella anche da sql
(rimosso significa: chiave disabilitata enabled false oppure mantain sql index disabilitato)
-se lancio ottimizza tabelle nav -> NON sistema gli indici e non li ricrea, ricrea solo l’indice cluster $0
ANOMALIE in lettura\scrittura e blocchi in registrazioni
Ipotizzando che i problemi esistenti siano relativi al fatto che su sql ci sono indici diversi in struttura o numero rispetto a quelli definiti su Navision:
2 soluzioni:
1° ricostruire gli indici SQL persi da NAV
-Farsi dare elenco tabelle di cui ricostruire gli indici
-mettere il db in single user
-Togliere le relazioni dal db
-Aprire le tabelle interessate una per volta
-Disabilitare flag Maintain SQL Index (tranne chiave primaria indice cluster)
-Salvare tabella
-Verificare che su console SQL l’indice sia stato rimosso
-Riaprire tabella, riabilitare opzione Maintain SQL Index per tutti gli indici
-Salvare tabella
-Verificare che su console SQL l’indice sia stato creato
SE PROCEDURA ANDASSE IN ERRORE (dipende dalla versione NAV usata, es: su 5.0 nessun problema, su 2009 si)
Ø è possibile segnare gli indici attivi (enabled)
Ø disabilitarli, salvare la tabella, verificare che sql siano stati rimossi
Ø riabilitare gli indici ->verificare che sql siano stati ricreati
Ø rimuovere eventuali CONSTRAINTS rimaste appese e non eiliminate su sql
2° ricreare il database su SQL partendo da un backup NAV
-Eseguire un backup NAV (non devono esistere tabelle virtuali collegate a viste altrimenti va in errore restore)
-Creare da NAV nuovo database SQL
-Eseguire restore database da NAV su SQL à ricrea esattamente gli indici cosi come definiti in dizionario NAV attuale
Considerazioni
La seconda soluzione è la più pulita della due ma entrambe potrebbero NON risolvere il problema per tre motivi:
1. la struttura originale di Nav potrebbe essere stata modificata su Nav e quindi su sql verrebbe replicata identica portandosi dietro le anomalie
2. il database originale è stato creato prendendo il database nav e non quello sql (che potrebbe avere abilitato e configurato volontariamente indici diversi nel campo “Define SQL Index”)
3. i SIFT index Nav sono stati modificati su NAV per SQL (in versione precedenti a 5.1 potevano causare blocchi in registrazioni)
NB: ESEGUIRE SEMPRE LE COPIE DI BACKUP (fare sempre le copie prima di iniziare qualsiasi attività)
1. fare 1 Backup db NAV da NAV
2. fare 1 Backup db SQL da SQL
3. eseguire un test di ripristino per entrambi i backup
4. verificare di avere la licenza runtime customer (esportarla eventualmente dal server)
5. SQL non va reinstallato ma fare comunque i backup Master (contiene la licenza customer), Model, MSDB