Replica di SQL Server 2008 (evitando la reinizializzazione)
-
05-07-2019 - |
Domanda
Sto cercando di determinare se esiste un modo migliore per gestire la replica rispetto al modo in cui stiamo attualmente facendo le cose.
Stiamo essenzialmente cercando di determinare 2 cose:
- Esiste un modo per aggiungere una colonna esistente da una tabella alla replica senza reinizializzare il tutto pubblicazione
- Puoi semplicemente selezionare un articolo specifico da reinizializzare invece di tutto degli articoli in una pubblicazione?
(Sono un po 'nuovo nella replica ... sto cercando di aggiornarmi, quindi mi scuso se la mia terminologia non ha senso)
In questo momento abbiamo circa 30 pubblicazioni in modo che se qualcuno deve essere reinizializzato c'è un impatto minimo ... perché molti dei nostri tavoli sono piuttosto enormi. Preferiremmo avere solo diverse pubblicazioni.
Qualsiasi idea sarebbe molto apprezzata.
Aggiorna
Quando proviamo ad aggiungere una colonna a un articolo riceviamo il messaggio:
Ne hai cambiato uno o più proprietà che richiedono tutto abbonamenti da reinizializzare. Il salvataggio di queste modifiche indica ciascuna abbonamento che supporta automatico reinizializzazione da reinizializzare da un'istantanea alla successiva Viene eseguito l'agente di distribuzione. Devi correre l'agente snapshot per generare il file snapshot.
Vogliamo evitare di reinizializzare tutte le sottoscrizioni .. stiamo usando la replica transazionale ... di nuovo vogliamo aggiungere una colonna esistente a una pubblicazione esistente senza dover reinizializzare tutte le sottoscrizioni.
Soluzione
Che tipo di replica? Snapshot, Merge, Transacitonal, Peer-to-Peer?
1) Sì. Vedi Apportare modifiche allo schema sui database di pubblicazione :
- Per aggiungere una nuova colonna a una tabella e includere quella colonna in un esistente pubblicazione, eseguire ALTER TABLE INSERISCI . Per impostazione predefinita, il la colonna viene quindi replicata a tutti Iscritti. La colonna deve consentire Valori NULL o includere un valore predefinito vincolo.
- Per includere una colonna esistente in un pubblicazione esistente, utilizzare
sp_articlecolumn
(Transact-SQL),sp_mergearticlecolumn
(Transact-SQL), o le proprietà della pubblicazione - finestra di dialogo.
2) Dipende dal tipo di replica. Vedi Reinizializzazione di un abbonamento :
La reinizializzazione di un abbonamento comporta applicando una nuova istantanea di uno o più articoli per uno o più abbonati: replica transazionale e istantanea consentire ai singoli articoli di essere reinizializzata; unisci replica richiede che tutti gli articoli siano Reinitialized .