none
Evitare creazione di foreign key durante la Replica RRS feed

  • Domanda

  • Salve, ho attivato la replica transazionale di un database SQL Server 2008 R2 "parziale", ovvero di sole alcune sue tabelle. Dopo aver funzionato per bene per un certo periodo, in seguito all'aggiunta di nuove tabelle da replicare e alla conseguente generazione di un nuovo snapshot, durante la distribuzione di tale snapshot appare un messaggio d'errore che indica l'impossibilità a creare una foreign key tra una tabella inclusa tra quelle da replicare e una che invece non lo è.

    L'errore è del tipo:

    "L'istruzione ALTER TABLE è in conflitto con il vincolo FOREIGN KEY "FK_Tabella2_Tabella1". Il conflitto si è verificato nella tabella "dbo.Tabella1", column 'Codice' del database "ArchivioXX"."
    dove appunto Tabella1 è delle tabelle replicate, mentre Tabella2 non lo è.

    L'agente di replica naturalmente cerca di replicare la foreign key in questione perché questa è presente sul database del server di pubblicazione. Poiché non desidero replicare la Tabella2, sto cercando il modo di evitare la creazione di tale foreign key.

    Ho provato modificando l'opzione "Attiva per Replica" della foreign Key modificandola da Sì a No e poi ripetendo la generazione dello snapshot, ma l'errore si ripresenta identico.

    Ho provato poi a modificare tra le proprietà della pubblicazione, quella dell'Artcolo Tabella1 denominata "Copia vincoli di chiave unica" impostandola a False, ma l'errore continua a verificarsi.

    Cos altro potrei provare?

    Ringrazio anticipatamente coloro che vorranno fornirmi qualche idea o suggerimento.

    Giuseppe


    • Modificato glgbs giovedì 18 settembre 2014 15:55
    giovedì 18 settembre 2014 15:52

Risposte

  • Ciao Giuseppe,

    dalla documentazione sembra proprio che l'agente di replica disabiliti di default il constraint, mentre se è l'utente che esegue le operazioni sulla tabella oggetti di foreign key, il vincolo è controllato.

    Solo che si dà per scontato che le due tabelle ci siano. Da quanto ho capito, nel tuo caso stai replicando solo una tabella delle due (probabilmente la figlia senza il "genitore"). Ho provato a fare un database daccapo e sembra funzionare, purchè tu imposti l'opzione dell'articolo "Copy Foreign Keys" a false:

    prova a verificare questa impostazione.

    ciao


    Alessandro Alpi SQL Server MVP

    sabato 20 settembre 2014 07:45
    Moderatore

Tutte le risposte

  • nessuna idea?

    forse la domanda è poco chiara?

    • Modificato glgbs venerdì 19 settembre 2014 16:00
    venerdì 19 settembre 2014 13:59
  • Ciao Giuseppe,

    dalla documentazione sembra proprio che l'agente di replica disabiliti di default il constraint, mentre se è l'utente che esegue le operazioni sulla tabella oggetti di foreign key, il vincolo è controllato.

    Solo che si dà per scontato che le due tabelle ci siano. Da quanto ho capito, nel tuo caso stai replicando solo una tabella delle due (probabilmente la figlia senza il "genitore"). Ho provato a fare un database daccapo e sembra funzionare, purchè tu imposti l'opzione dell'articolo "Copy Foreign Keys" a false:

    prova a verificare questa impostazione.

    ciao


    Alessandro Alpi SQL Server MVP

    sabato 20 settembre 2014 07:45
    Moderatore