Questo utilizza lo schema delle informazioni sia per le tabelle che per le stored procedure. Puoi modificare o eliminare la condizione ROUTINE_TYPE per aggiungere funzioni e puoi modificare il tipo di tabella per restituire le viste.
Questa risposta produce i suoi risultati controllando da quali tabelle dipende una stored procedure. Penso che questo sarà un risultato molto più accurato del controllo se nel testo della query è presente un nome. Se la procedura fa riferimento a una tabella in una sezione di commento, questo risultato non verrà restituito nella prima query, ma sarà nella seconda e in altre risposte fornite.
SELECT t.TABLE_NAME, s.ROUTINE_NAME
FROM INFORMATION_SCHEMA.TABLES t
INNER JOIN INFORMATION_SCHEMA.ROUTINES s ON
s.ROUTINE_NAME IN (SELECT referencing_entity_name
FROM sys.dm_sql_referencing_entities(TABLE_SCHEMA + '.' + TABLE_NAME, 'OBJECT'))
AND s.ROUTINE_TYPE = 'PROCEDURE'
WHERE t.TABLE_TYPE = 'BASE TABLE'
modifica :ecco come ottenere le dipendenze senza la funzione. (Mi piace di più questo metodo)
SELECT DISTINCT t.name [TableName], p.name [ProcedureName]
FROM sys.objects t
LEFT JOIN sys.sql_dependencies d ON
d.referenced_major_id = t.object_id
LEFT JOIN sys.objects p ON
p.object_id = d.object_id
AND p.type = 'p'
WHERE t.type = 'u'
Se il tuo uso specifico è quello di trovare qualsiasi stringa che corrisponda al nome di una tabella, di seguito funzionerà:
SELECT t.TABLE_NAME, s.ROUTINE_NAME
FROM INFORMATION_SCHEMA.TABLES t
INNER JOIN INFORMATION_SCHEMA.ROUTINES s
ON CHARINDEX(t.TABLE_NAME, s.ROUTINE_DEFINITION) > 0
AND s.ROUTINE_TYPE = 'PROCEDURE'
WHERE t.TABLE_TYPE = 'BASE TABLE'