Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come disabilitare tutti i vincoli di controllo nel database di SQL Server - Tutorial SQL Server / TSQL Parte 87

Scenario:

Stai lavorando come sviluppatore SQL Server/ETL. È necessario caricare un mucchio di dati nelle tabelle nel database di SQL Server. I vincoli di controllo vengono creati su tabelle diverse. Ci sono possibilità che i dati che stai per caricare non si qualifichino in base a Check Constraint. L'azienda vuole che carichi i dati comunque anche se non si qualifica con Verifica vincolo. Si desidera disabilitare temporaneamente tutti i vincoli nel database di SQL Server, quindi caricare i dati e quindi riattivare Verifica vincoli.


Soluzione:

Lo script seguente può essere utilizzato per generare lo script Disable Check Constraint per tutti i Check Constraint abilitati nel database. È possibile filtrare ulteriormente le tabelle nella clausola where se non si desidera generare uno script per tutte le tabelle.

 --Generate Script to Disable All Check Constraint in SQL Server Database
 Select DB_Name() AS DBName,
 Schema_Name(Schema_id) AS TableSchema,
 Object_name(parent_object_id) as TableName,
  definition,
  'Alter Table [' + Schema_Name(Schema_id) 
    + '].[' + Object_name(parent_object_id) 
    + ']' + ' NOCHECK  CONSTRAINT ' 
    + '[' + NAME + ']' AS DisableCheckConstraint
 From sys.check_constraints
 where is_disabled=0
 
 
 
 
Come generare script per disabilitare tutti i vincoli di controllo nel database di SQL Server
 Copia i risultati dalla colonna DisableCheckConstraint ed esegui in SSMS per disabilitare i vincoli di controllo richiesti.
ALTER TABLE [dbo].[Customer22] NOCHECK CONSTRAINT [CK__Customer2__FName__6C190EBB]

ALTER TABLE [dbo].[Employee] NOCHECK CONSTRAINT [CK__Employee__FName__7A672E12]


Video demo:come generare script per disabilitare tutti i vincoli di controllo in SQL Server