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.
Retrieves foreign key constraints from SQL Server database tables
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.
Get-DbaDbForeignKey
[-SqlInstance] <DbaInstanceParameter[]>
[[-SqlCredential] <PSCredential>]
[[-Database] <Object[]>]
[[-ExcludeDatabase] <Object[]>]
[-ExcludeSystemTable]
[-EnableException]
[<CommonParameters>]
PS C:\> Get-DbaDbForeignKey -SqlInstance sql2016
Gets all database Foreign Keys.
PS C:\> Get-DbaDbForeignKey -SqlInstance Server1 -Database db1
Gets the Foreign Keys for the db1 database.
PS C:\> Get-DbaDbForeignKey -SqlInstance Server1 -ExcludeDatabase db1
Gets the Foreign Keys for all databases except db1.
PS C:\> Get-DbaDbForeignKey -SqlInstance Server1 -ExcludeSystemTable
Gets the Foreign Keys from all tables that are not system objects from all databases.
PS C:\> 'Sql1','Sql2/sqlexpress' | Get-DbaDbForeignKey
Gets the Foreign Keys for the databases on Sql1 and Sql2/sqlexpress.
The target SQL Server instance or instances
Alias | |
Required | True |
Pipeline | true (ByValue) |
Default Value |
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 |
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 |
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 |
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 |
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 |