If you define a constraint without explicitly giving it a name, SQL Server will generate one for you.
You know the ones, they look something like this PK__MY_TABLE__3213E83FA7739BB4.
Why might that be a bad thing? It makes writing deployment scripts harder because you won’t know up front the names of constraints you might want to refer to.
Michael J Swart describes a query to discover the system generated names in your databases (with a small modification):
SELECT [Schema] = SCHEMA_NAME(o.schema_id), [System Generated Name] = OBJECT_NAME(o.object_id), [Parent Name] = OBJECT_NAME(o.parent_object_id), [Object Type] = o.type_desc FROM sys.objects o JOIN sys.sysconstraints c ON o.object_id = c.constid WHERE (status & 0x20000) > 0 and o.is_ms_shipped = 0
According to the sys.sysconstraints documentation page:
This SQL Server 2000 system table is included as a view for backward compatibility. We recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see Mapping System Tables to System Views (Transact-SQL). This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
You can query the same information by using the individual views unioned together:
SELECT [Schema] = SCHEMA_NAME(schema_id), [System Generated Name] = OBJECT_NAME(object_id), [Parent Name] = OBJECT_NAME(parent_object_id), [Object Type] = type_desc FROM sys.check_constraints WHERE is_system_named = 1 UNION ALL SELECT [Schema] = SCHEMA_NAME(schema_id), [System Generated Name] = OBJECT_NAME(object_id), [Parent Name] = OBJECT_NAME(parent_object_id), [Object Type] = type_desc FROM sys.default_constraints WHERE is_system_named = 1 UNION ALL SELECT [Schema] = SCHEMA_NAME(schema_id), [System Generated Name] = OBJECT_NAME(object_id), [Parent Name] = OBJECT_NAME(parent_object_id), [Object Type] = type_desc FROM sys.key_constraints WHERE is_system_named = 1 UNION ALL SELECT [Schema] = SCHEMA_NAME(schema_id), [System Generated Name] = OBJECT_NAME(object_id), [Parent Name] = OBJECT_NAME(parent_object_id), [Object Type] = type_desc FROM sys.foreign_keys WHERE is_system_named = 1