Escenario:
Está trabajando como desarrollador de SQL Server/DBA de SQL Server y necesita obtener una lista de tablas de una base de datos con información si la tabla tiene la restricción de clave principal o no tiene restricción de clave principal.Solución:
Vamos a utilizar las vistas del sistema en la base de datos del servidor SQL para obtener una lista de tablas con o sin restricciones de clave principal.use YourDatabaseName go Select T.Table_Catalog as DatabaseName, T.Table_Schema AS TableSchema, T.Table_Name AS TableName, CCU.Column_Name AS ColumnName, TC.Constraint_Name AS ConstraintName, Case When TC.Constraint_Name is not Null Then 'Yes' Else 'No' End as HasPrimaryKeyConstraint From information_schema.tables T left join information_Schema.Table_Constraints TC on T.Table_Catalog=TC.Table_Catalog and T.Table_Schema=TC.Table_Schema and T.Table_Name=TC.Table_Name and TC.Constraint_Type='PRIMARY KEY' left JOIN Information_Schema.constraint_column_usage CCU on TC.Constraint_Name=CCU.Constraint_Name and TC.Table_Name=CCU.Table_Name and T.Table_Type='BASE TABLE'
Ejecuto el código anterior en una de mis bases de datos y lista de tablas con restricción de clave principal o sin restricción de clave principal.

Video de demostración:cómo obtener todas las tablas con o sin restricción de clave principal en la base de datos del servidor Sql