Roberto Brunetti

ASP.NET - Mobility
Team System

SharePoint Conference

.NET Programming

Corsi

SharePoint

Merge Replication - Manutenzione

Visto che mi sono arrivate due mail sull'argomento proprio oggi ecco due info su alcune modifiche, e relative problematiche, che possono essere necessarie su una pubblicazione già avviata.

Aggiunta di una o più tabelle alla pubblicazione

Richiede la ricreazione (nel senso che va ricreata, non che si prende una pausa scolastica :-) dello snapshot. Durante la rigenerazione (meglio) dello snapshot viene aggiunto lo schema (.sch), i relativi oggetti DB (.trg, .dri, etc) e ovviamente i dati (.bcp) della nuova tabella allo snapshot esistente. Il processo quindi è relativamente veloce.

N.B. Se la pubblicazione ha filtri parametrici occorre rigenerare anche tutte le partizioni esistenti

Rimozione di una tabella dalla pubblicazione

Anche in questo caso occorre la rigenerazione dello snapshot della pubblicazione (e delle relative partizioni esistenti).

Inoltre l'oggetto non viene rimosso dal database della pubblicazione e soprattutto non viene rimosso dal database dei subscriber. Occorre una DROP manuale. Occhio ovviamente a eventuali foreign key di altre tabelle nel subscriber che potrebbero ancora puntare alla tabella eliminata.

Il processo descritto vale per SQL 2005 con la pubblicazione in compatibilità 90RTM o superiore (per superiore si intende Katmai). Se invece siamo su 2000 oppure su 2005 ma in compatibilità minore di 90RTM occorre purtroppo una ricostruzione anche delle subscription che devono essere eliminate, ricreate e risincronizzate.

Aggiunta/Modifica di indici

Non è supportata la creazione esplicita di indici. Non supportata in questo caso significa che si possono aggiungere indici alle tabelle pubblicate (e ci mancherebbe !!!) ma questa modifica (CREATE o ALTER INDEX che sia) non viene propagata ai subscriber.

Occorre in questo caso una operazione di CREATE o ALTER INDEX manuale sui subscriber.

E' supportata (nel senso che si propaga) invece la creazione implicita di indici che derivano da Primary o Foreign Key. Occhio, nel caso di FK, a pubblicare anche la tabella relazionata altrimenti il subscriber otterrà un errore alla prossima sincronizzazione.

Questo perchè in generale gli statement DDL di modifica delle strutture (ALTER TABLE, ALTER TRIGGER etc) si propagano ai subscriber anche se la relativa tabella non ha le opzioni di Copy abilitate. E' sufficiente infatti che la Pubblicazione abbia l'opzione Replicate Schema Changes affinchè le modifiche vengano sparate sui subscriber. Per evitare un passaggio di DDL sui subscriber occorre quindi togliere l'opzione Replicate Schema Changes, fare la modifica e poi riabilitarla.

Altre modifiche alle proprietà della pubblicazione

  • Change Snapshot Format
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
  • Modifica della location degli snapshot
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
  • Modifica alla compressione dello snapshot
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
  • Aggiunta/Mod/Eliminazione di un filtro di Join
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
    • Occorre reinizzializzare le subscription
  • Aggiunta/Modifica/Eliminazione di un Logical Record (non supportato su SQLCE 3.1)
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
    • Occorre reinizzializzare le subscription
  • Abilitazione delle Precomputed Partition
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
  • Abilitazione di Optimize Subscription (per 2000, in 2005 conviene usare le precomputed partition se possibile)
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
  • Abilitazione o Disabilitazione di Validation
    • Occorre reinizializzare le subscription
  • Modifica al compatibility level
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
  • Includere una colonna che non era pubblicata in un filtro
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
    • Occorre reinizializzare le subscription
  • Aggiungere/cancellare/modificare un filtro sulle righe
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
    • Occorre reinizializzare le subscription
    • Se è un filtro parametrico
      • Non si può fare upload delle modifiche prima del reinitialize
    • Se invece la tabella da filtrare non è parte di un Join Filter è più furbo togliere l'article e poi aggiungerlo di nuovo: questo evita il dover reinizializzare le subscription
  • Modifica alle Schema Option
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
  • Modifica al Tracking-level: da colum a row
    • Occorre reinizializzare la snapshot (e le partizioni se esistenti)
    • Occorre reinizializzare le subscription
  • Modifica al Tracking-level: da row a column
    • non occorre fare niente

 

Hope useful

Posted: giu 21 2007, 06.15 by rob | with no comments
Filed under: ,