commands

^

Get-DbaDbForeignKey

Author Claudio Silva (@ClaudioESSilva), claudioessilva.eu
Availability Windows, Linux, macOS

 

Want to see the source code for this command? Check out Get-DbaDbForeignKey on GitHub.
Want to see the Bill Of Health for this command? Check out Get-DbaDbForeignKey.

Synopsis

Retrieves foreign key constraints from SQL Server database tables

Description

Retrieves all foreign key constraint definitions from tables across one or more SQL Server databases.
Essential for documenting referential integrity relationships, analyzing table dependencies before migrations, and troubleshooting cascade operations.
Returns detailed foreign key properties including referenced tables, schema information, and constraint status (enabled/disabled, checked/unchecked).
Supports filtering by database and excluding system tables to focus on user-defined constraints.

Syntax

Get-DbaDbForeignKey
    [-SqlInstance] <DbaInstanceParameter[]>
    [[-SqlCredential] <PSCredential>]
    [[-Database] <Object[]>]
    [[-ExcludeDatabase] <Object[]>]
    [-ExcludeSystemTable]
    [-EnableException]
    [<CommonParameters>]

 

Examples

 

Example: 1
PS C:\> Get-DbaDbForeignKey -SqlInstance sql2016

Gets all database Foreign Keys.

Example: 2
PS C:\> Get-DbaDbForeignKey -SqlInstance Server1 -Database db1

Gets the Foreign Keys for the db1 database.

Example: 3
PS C:\> Get-DbaDbForeignKey -SqlInstance Server1 -ExcludeDatabase db1

Gets the Foreign Keys for all databases except db1.

Example: 4
PS C:\> Get-DbaDbForeignKey -SqlInstance Server1 -ExcludeSystemTable

Gets the Foreign Keys from all tables that are not system objects from all databases.

Example: 5
PS C:\> 'Sql1','Sql2/sqlexpress' | Get-DbaDbForeignKey

Gets the Foreign Keys for the databases on Sql1 and Sql2/sqlexpress.

Required Parameters

-SqlInstance

The target SQL Server instance or instances

Alias
Required True
Pipeline true (ByValue)
Default Value

Optional Parameters

-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.

Alias
Required False
Pipeline false
Default Value
-Database

Specifies which databases to scan for foreign key constraints. Accepts database names, wildcards, or arrays.
Use this when you need to focus on specific databases rather than scanning all accessible databases on the instance.

Alias
Required False
Pipeline false
Default Value
-ExcludeDatabase

Excludes specific databases from the foreign key scan. Useful for skipping large databases, test environments, or databases known to have no relevant constraints.
Commonly used to exclude system databases like master, model, msdb, and tempdb when focusing on user databases.

Alias
Required False
Pipeline false
Default Value
-ExcludeSystemTable

Excludes system tables from the foreign key analysis, focusing only on user-created tables.
Use this switch when documenting application schemas or analyzing business logic relationships, as system table foreign keys are typically not relevant for most DBA tasks.

Alias
Required False
Pipeline false
Default Value False
-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.

Alias
Required False
Pipeline false
Default Value False