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:
- Mediante le opzioni dello schema di replica. Per ulteriori informazioni, vedere Procedura: Impostazione delle opzioni dello schema (SQL Server Management Studio) e How to: Specify Schema Options (Replication Transact-SQL Programming).
- Direttamente nella sintassi Transact-SQL o in Microsoft SQL Server Management Studio durante le operazioni seguenti:
- Creazione o modifica di un oggetto nel database di pubblicazione.
- Creazione o modifica di un oggetto nel database di sottoscrizione. Gli oggetti vengono in genere creati manualmente, anziché dalla replica, solo se una sottoscrizione viene inizializzata senza uno snapshot.
Per ulteriori informazioni, vedere: - CREATE TABLE (Transact-SQL), ALTER TABLE (Transact-SQL), CREATE TRIGGER (Transact-SQL) e ALTER TRIGGER (Transact-SQL)
- Procedura: Disattivazione di vincoli di chiave esterna per la replica (Visual Database Tools)
- Procedura: Disattivazione di vincoli CHECK per la replica (Visual Database Tools)
Vedere anche
Concetti
Considerazioni su tutti i tipi di replica
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
15 settembre 2007 |
|