Nifty!
As a rule, I need to know where the columns are being used. Since the primary server has over 180000 objects on it of many different types, I need to know more than procedures. So, here is my take on your query.
WITH TableList_CTE (TableName)
AS
(
SELECT TABLE_NAME + CHAR(32) AS TableName
FROM INFORMATION_SCHEMA.TABLES T
WHERE t.TABLE_TYPE = 'BASE TABLE'
)
SELECT TableName, OBJECT_NAME(OBJECT_ID) AS ProcedureName,
CASE WHEN OBJECTPROPERTY(OBJECT_ID, 'IsReplProc') = 1 THEN 'Replication Stored Procedure'
WHEN OBJECTPROPERTY(OBJECT_ID, 'IsExtendedProc') = 1 THEN 'Extended Stored Procedure'
WHEN OBJECTPROPERTY(OBJECT_ID, 'IsProcedure') = 1 THEN 'Stored Procedure'
WHEN OBJECTPROPERTY(OBJECT_ID, 'IsTrigger') = 1 THEN 'Trigger'
WHEN OBJECTPROPERTY(OBJECT_ID, 'IsTableFunction') = 1 THEN 'Table-Valued Function'
WHEN OBJECTPROPERTY(OBJECT_ID, 'IsScalarFunction') = 1 THEN 'Scalar-Valued Function'
WHEN OBJECTPROPERTY(OBJECT_ID, 'IsInlineFunction') = 1 THEN 'Inline function'
WHEN OBJECTPROPERTY(OBJECT_ID, 'IsView') = 1 THEN 'View'
ELSE 'Unknown' END AS ProcedureType
FROM sys.sql_modules S
JOIN TableList_CTE ON 1 = 1
ORDER BY TableName