Thor Logo dbatools

Remove-DbaDbCheckConstraint

View Source
Mikey Bronowski (@MikeyBronowski), bronowski.it
Windows, Linux, macOS

Synopsis

Removes check constraints from SQL Server database tables

Description

Removes check constraints from database tables across one or more SQL Server instances. Check constraints enforce data integrity by validating that column values meet specific criteria before allowing INSERT or UPDATE operations.

This function is useful when modifying table schemas, removing outdated business rules, or preparing databases for data migration where existing constraints might block bulk operations. You can target specific databases or remove constraints across multiple instances simultaneously.

Supports piping from Get-DbaDbCheckConstraint to remove only specific constraints that match your criteria, such as constraints containing particular patterns or on specific tables.

Syntax

Remove-DbaDbCheckConstraint
    [-SqlInstance <DbaInstanceParameter[]>]
    [-SqlCredential <PSCredential>]
    [-Database <Object[]>]
    [-ExcludeDatabase <Object[]>]
    [-ExcludeSystemTable]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Remove-DbaDbCheckConstraint
    [-SqlInstance <DbaInstanceParameter[]>]
    [-SqlCredential <PSCredential>]
    [-Database <Object[]>]
    [-ExcludeDatabase <Object[]>]
    [-ExcludeSystemTable]
    -InputObject <Check[]>
    [-EnableException]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

 

Examples

 

Example: 1
PS C:\> Remove-DbaDbCheckConstraint -SqlInstance localhost, sql2016 -Database db1, db2

Removes all check constraints from db1 and db2 on the local and sql2016 SQL Server instances.

Example: 2
PS C:\> $chkcs = Get-DbaDbCheckConstraint -SqlInstance localhost, sql2016 -Database db1, db2
PS C:\> $chkcs | Remove-DbaDbCheckConstraint

Removes all check constraints from db1 and db2 on the local and sql2016 SQL Server instances.

Example: 3
PS C:\> Remove-DbaDbCheckConstraint -SqlInstance localhost, sql2016 -Database db1, db2 -ExcludeSystemTable

Removes all check constraints except those in system tables from db1 and db2 on the local and sql2016 SQL Server instances.

Required Parameters

-InputObject

Accepts check constraint objects from Get-DbaDbCheckConstraint for targeted removal operations.
Use this to remove only specific constraints that match your filtering criteria, such as constraints with certain patterns or on particular tables.

PropertyValue
Alias
RequiredTrue
Pipelinetrue (ByValue)
Default Value

Optional Parameters

-SqlInstance

The target SQL Server instance or instances.

PropertyValue
Alias
RequiredFalse
Pipelinefalse
Default Value
-SqlCredential

Login to the target instance using alternative credentials. Accepts PowerShell credentials (Get-Credential).
Windows Authentication, SQL Server Authentication, Active Directory - Password, and Active Directory - Integrated are all supported.
For MFA support, please use Connect-DbaInstance.

PropertyValue
Alias
RequiredFalse
Pipelinefalse
Default Value
-Database

Specifies which databases to target for check constraint removal. Accepts wildcards and arrays for multiple databases.
Use this when you need to remove constraints from specific databases rather than all databases on the instance.

PropertyValue
Alias
RequiredFalse
Pipelinefalse
Default Value
-ExcludeDatabase

Excludes specific databases from check constraint removal operations. Accepts wildcards and arrays for multiple databases.
Use this to protect critical databases like master, msdb, or production databases when running against multiple instances.

PropertyValue
Alias
RequiredFalse
Pipelinefalse
Default Value
-ExcludeSystemTable

Excludes check constraints on system tables from the removal operation, focusing only on user-created tables.
Use this switch when you want to modify only business logic constraints while preserving SQL Server’s built-in constraints.

PropertyValue
Alias
RequiredFalse
Pipelinefalse
Default ValueFalse
-EnableException

By default, when something goes wrong we try to catch it, interpret it and give you a friendly warning message.
This avoids overwhelming you with “sea of red” exceptions, but is inconvenient because it basically disables advanced scripting.
Using this switch turns this “nice by default” feature off and enables you to catch exceptions with your own try/catch.

PropertyValue
Alias
RequiredFalse
Pipelinefalse
Default ValueFalse
-WhatIf

Shows what would happen if the command were to run. No actions are actually performed.

PropertyValue
Aliaswi
RequiredFalse
Pipelinefalse
Default Value
-Confirm

Prompts you for confirmation before executing any changing operations within the command.
This is the default. Use -Confirm:$false to suppress these prompts.

PropertyValue
Aliascf
RequiredFalse
Pipelinefalse
Default Value