Disabilitare un vincolo CHECK per la replica

Si applica a: SQL Server 2016 (13.x) e versioni successiveDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)

È possibile disabilitare un vincolo check in SQL Server usando SQL Server Management Studio o Transact-SQL. I vincoli check possono essere disabilitati in modo esplicito per la replica, il che può risultare utile quando si pubblicano dati da una versione precedente di SQL Server.

Nota

Se una tabella viene pubblicata usando la replica, i vincoli CHECK vengono disabilitati automaticamente per le operazioni eseguite dagli agenti di replica. Quando un agente di replica esegue un accodamento, aggiornamento o una eliminazione a un sottoscrittore, il vincolo non viene controllato; se invece un utente esegue un accodamento, un aggiornamento o una eliminazione, il vincolo viene controllato. Il vincolo viene disabilitato per l'agente di replica in quanto esso è già stato controllato nel server di pubblicazione quando i dati sono stati inseriti, aggiornati o eliminati. Per altre informazioni, vedere Specificare le opzioni dello schema.

Prima di iniziare

Sicurezza

Autorizzazioni

È necessario disporre dell'autorizzazione ALTER per la tabella.

Utilizzo di SQL Server Management Studio

Per disabilitare un vincolo CHECK per la replica

  1. In Esplora oggettiespandere la tabella contenente il vincolo CHECK che si desidera modificare, quindi espandere la cartella Vincoli .

  2. Fare clic con il pulsante destro del mouse sul vincolo CHECK da modificare, quindi scegliere Modifica.

  3. Nella finestra di dialogo Verifica vincoli , in Progettazione tabelleselezionare un valore No per Attiva per replica.

  4. Fare clic su Close.

Utilizzo di Transact-SQL

Per disabilitare un vincolo CHECK per la replica

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui. Nell'esempio viene creata una tabella con una colonna IDENTITY e un vincolo CHECK sulla tabella. Nell'esempio il vincolo viene quindi eliminato e ricreato specificando la clausola NOT FOR REPLICATION.

    USE AdventureWorks2022;  
    GO  
    CREATE TABLE dbo.doc_exd (column_a int IDENTITY (1,1)   
    CONSTRAINT exd_check CHECK (column_a > 1))   
    
    ALTER TABLE dbo.doc_exd   
    DROP CONSTRAINT exd_check;   
    GO  
    ALTER TABLE dbo.doc_exd    
    ADD CONSTRAINT exd_check CHECK NOT FOR REPLICATION (column_a > 1);  
    

Per altre informazioni, vedere ALTER TABLE (Transact-SQL).

Vedi anche

Specificare le opzioni dello schema