Controllo di vincoli, identità e trigger con l'opzione NOT FOR REPLICATION

Data aggiornamento: 15 settembre 2007

In alcuni casi è consigliabile considerare l'attività dell'utente in una topologia di replica diversamente dall'attività dell'agente. Se, ad esempio, nel server di pubblicazione viene inserita una riga da un utente e tale inserimento soddisfa un vincolo CHECK nella tabella, potrebbe non essere necessario imporre lo stesso vincolo quando la riga viene inserita da un agente di replica nel Sottoscrittore. L'opzione NOT FOR REPLICATION consente di specificare che gli oggetti di database indicati di seguito devono essere considerati in modo diverso quando un agente di replica esegue un'operazione:

  • Vincoli di chiave esterna
    Il vincolo di chiave esterna non viene applicato quando un agente di replica esegue un'operazione di inserimento, aggiornamento o eliminazione.
  • Vincoli CHECK
    Il vincolo CHECK non viene applicato quando un agente di replica esegue un'operazione di inserimento, aggiornamento o eliminazione.
  • Colonne Identity
    Il valore della colonna Identity non viene incrementato quando un agente di replica esegue un'operazione di inserimento.
  • Trigger
    Il trigger non viene eseguito quando un agente di replica esegue un'operazione di inserimento, aggiornamento o eliminazione.

Quando una tabella viene pubblicata, le opzioni dello schema controllano la creazione degli oggetti nel database di sottoscrizione. Le opzioni predefinite dello schema variano in base al tipo di pubblicazione. Quando le opzioni vengono impostate per specificare che i vincoli FOREIGN KEY e CHECK vengono creati nel database di sottoscrizione, viene impostata l'opzione NOT FOR REPLICATION. L'opzione NOT FOR REPLICATION viene impostata anche durante la replica di colonne Identity nelle pubblicazioni di tipo merge e nelle pubblicazioni transazionali che supportano le sottoscrizioni aggiornabili. Per ulteriori informazioni sulla replica delle colonne Identity, vedere Replica di colonne Identity.

Nella maggior parte dei casi le impostazioni predefinite sono appropriate, ma è possibile modificarle qualora per un'applicazione sia necessario un funzionamento diverso. I trigger rappresentano l'elemento principale da considerare. Se, ad esempio, si definisce un trigger di inserimento con l'opzione NOT FOR REPLICATION impostata, il trigger verrà attivato da tutti gli inserimenti eseguiti dagli utenti, ma non da quelli eseguiti dagli agenti di replica. Si consideri un trigger che inserisce dati in una tabella di rilevamento. Quando l'utente inserisce inizialmente la riga, è corretto che il trigger venga attivato e inserisca una riga nella tabella di rilevamento. Il trigger non deve invece essere attivato quando i dati vengono replicati nel Sottoscrittore, in quanto nella tabella di rilevamento verrebbe inserita una riga non necessaria.

Per specificare l'opzione NOT FOR REPLICATION

È possibile specificare l'opzione NOT FOR REPLICATION nei modi seguenti:

Vedere anche

Concetti

Considerazioni su tutti i tipi di replica

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

15 settembre 2007

Contenuto modificato:
  • Chiarimento sull'impostazione dell'opzione NOT FOR REPLICATION.