No puede hacer esto si utiliza cualquier T-SQL dinámico. Dynamic T-SQL no aparecerá en ninguna investigación de dependencias de objetos.
En su lugar, puede utilizar el DMV sys.dm_db_index_usage_stats para encontrar los objetos a los que no han hecho referencia las consultas. Aquí está una consulta que hice en SQLServerPedia para ello:
http://sqlserverpedia.com/wiki/Find_Indexes_Not_In_Use
La consulta está diseñado para los índices de ajuste del rendimiento, por lo que tendrá que modificar unas pocas líneas. Aquí está la consulta modificada:
SELECT
o.name
, indexname=i.name
, i.index_id
, reads=user_seeks + user_scans + user_lookups
, writes = user_updates
, rows = (SELECT SUM(p.rows) FROM sys.partitions p WHERE p.index_id = s.index_id AND s.object_id = p.object_id)
, CASE
WHEN s.user_updates < 1 THEN 100
ELSE 1.00 * (s.user_seeks + s.user_scans + s.user_lookups)/s.user_updates
END AS reads_per_write
, 'DROP INDEX ' + QUOTENAME(i.name)
+ ' ON ' + QUOTENAME(c.name) + '.' + QUOTENAME(OBJECT_NAME(s.object_id)) as 'drop statement'
FROM sys.dm_db_index_usage_stats s
INNER JOIN sys.indexes i ON i.index_id = s.index_id AND s.object_id = i.object_id
INNER JOIN sys.objects o on s.object_id = o.object_id
INNER JOIN sys.schemas c on o.schema_id = c.schema_id
WHERE OBJECTPROPERTY(s.object_id,'IsUserTable') = 1
AND s.database_id = DB_ID()
ORDER BY reads
Tenga en cuenta que este atrapa todos los índices, y usted tiene que tamizar a través de - algunos de sus objetos puede haber montones, algunos pueden tener índices agrupados, etc. Dejaré esto como una wiki para que alguien más ambicioso que yo pueda editarlo para construir una lista dedujo. :-D
¿Qué versión de SQL Server? –
Esta pregunta es casi idéntica a [ésta] (http://stackoverflow.com/questions/5352353/find-all-tables-not-referenced-in-stored-procedures) pero las respuestas son diferentes. – DOK
@DOK - ¿Cuál? ¡Has vuelto a vincular a esta pregunta! –