Domanda

Elimina erroneamente tutte le righe da una tabella MS SQL 2000 utilizzata nella replica di tipo merge (la tabella si trova nell'editore).Ho quindi aggravato il problema utilizzando un'operazione DTS per recuperare le righe da un database di backup e ripopolare la tabella.

Ciò ha creato il seguente problema:L'operazione di eliminazione ha contrassegnato le righe per l'eliminazione sui client ma l'operazione DTS ignora i trigger di replica in modo che le righe importate non vengano contrassegnate per l'inserimento nei sottoscrittori.In effetti gli abbonati perdono i dati anche se si trovano sull'editore.

Quindi ho pensato "non preoccuparti", eliminerò nuovamente le righe e poi le aggiungerò correttamente tramite un'istruzione di inserimento e verranno quindi contrassegnate per l'inserimento negli abbonati.

Questo è il mio problema:Non riesco a eliminare le righe DTSED perché ottengo una riga chiave duplicata in oggetto "msmerge_tombstone" con indice univoco "UC1mmmerge_tombstone". " errore.Quello che vorrei fare è in qualche modo eliminare le righe dalla tabella ignorando il trigger di replica di tipo merge.È possibile?Non voglio rimuovere e ripetere la replica perché gli abbonati sono più di 50 dispositivi Windows Mobile.

Modificare:Ho provato il comando Tronca tabella.Ciò restituisce il seguente errore "Impossibile troncare la tabella xxxx perché è pubblicata per la replica"

È stato utile?

Soluzione 6

Grazie per i suggerimenti...alla fine ho trovato una soluzione:

Ho eliminato il trigger di eliminazione dell'unione dalla tabella
Eliminate le righe DTS
Ricreato il trigger di eliminazione dell'unione
Aggiunte le mie righe correttamente utilizzando un'istruzione di inserimento.

Ero un po' preoccupato di armeggiare con i trigger di unione, ma ogni cosa appare per funzionare correttamente.

Altri suggerimenti

Hai provato a troncare la tabella?

Potrebbe essere necessario troncare la tabella e reimpostare il campo ID su 0 se è necessario che le righe inserite abbiano lo stesso ID.In caso contrario, basta troncare e dovrebbe andare bene.

Potresti anche eliminare temporaneamente l'indice univoco e aggiungerlo nuovamente quando hai finito.

Esamina sp_mergedummyupdate

Creare una seconda tabella sarebbe un'opzione?Potresti creare una seconda tabella, popolarla con i dati necessari, aggiungere i vincoli/indici, quindi eliminare la prima tabella e rinominare la seconda tabella.Questo dovrebbe darti i dati con le chiavi giuste... e dovrebbe consistere tutto in istruzioni SQL a cui è consentito gocciolare lungo la replica.Probabilmente non è il massimo in termini di prestazioni... e sicuramente imporrebbe qualche rischio.

Non l'ho provato in prima persona in un ambiente replicato... ma potrebbe valere almeno la pena provarlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top