Wednesday, September 13, 2017

MSSQL Check in which tables a customer appears (FK based)

I made a little script to check in which table a customer 'appeared':


SELECT
  'SELECT ''['+ +SCHEMA_NAME(f.SCHEMA_ID)+'].['+OBJECT_NAME(f.parent_object_id) + ']'' AS TABLE_NAME, COUNT(*) as AANTAL FROM ['+SCHEMA_NAME(f.SCHEMA_ID)+'].['+OBJECT_NAME(f.parent_object_id) +']
WHERE '+ COL_NAME(fc.parent_object_id,fc.parent_column_id) + '= ''<>''
UNION ALL' as [sql],
f.name AS ForeignKey,
SCHEMA_NAME(f.SCHEMA_ID) SchemaName,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id,fc.parent_column_id) AS ColumnName,
SCHEMA_NAME(o.SCHEMA_ID) ReferenceSchemaName,
OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS ReferenceColumnName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id
INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id
where OBJECT_NAME (f.referenced_object_id) = '<>'



Till Next Time