Hay una secuencia de comandos t-sql para encontrar tablas que no están siendo utilizadas en el servidor sql por procudios almacenados, vistas, funciones, etc. Tengo una base de datos que tiene cientos de tablas, si no más y antes de ir a caer tablas, quería saber si había una secuencia de comandos que podría ir a través de cada objeto en la base de datos y decirme si alguna tabla está en uso.script tsql para encontrar tablas que no estén siendo utilizadas por procedimientos almacenados, vistas, funciones, etc.
Respuesta
Si desea utilizar un script, here (Listing SQL Server Object Dependencies) es un muy buen artículo sobre cómo crear secuencias de comandos de dependencias. Utilizando eso, puede hacer una lista de tablas a las que se hace referencia. Tiene la lista de tablas que están en su base de datos, para que sepa cuáles de ellas no se están utilizando.
En el artículo utilizan
sp_dependsprocedimiento almacenado. Sin embargo, tiene una falla. Por ejemplo, si tiene un procedimiento almacenado que utilizó la tabla "MyTable" y crea el procedimiento antes de crear la tabla "MyTable", no verá esto en la lista de dependencias. Es por eso que debe buscar en la tabla
syscommentspara encontrar dependencias. Pero esto tampoco es exacto, porque si tiene el nombre de la tabla en el comentario, lo tratará como una dependencia.
Si está utilizando Management Studio, puede hacer clic derecho en una tabla y ver las dependencias.
Y aquí es un enlace a un artículo sobre cómo hacer esto en tsql, que supongo es lo que está buscando:
https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p=277
Siempre se puede construir una tabla temporal/var con todas las tablas que tienen dependencias, y compararlo con todas las tablas para ver qué no tiene ninguna dependencia.
Por lo que yo sé, no se puede confiar realmente en la administración de dependencias de SQL Server. Lukasz señaló uno de los muchos problemas.
En 2005, el equivalente de la tabla de syscomments anterior es sys.sql_modules.
Para buscar todos los nombres de tabla que no se producen en el código TSQL (vistas, SPS, funciones), utilice esta declaración:
select t.name, sys.objects.name foundin, sys.objects.type_desc
from sys.objects t
left outer join
sys.sql_modules
inner join sys.objects on sys.objects.object_id = sys.sql_modules.object_id
on sys.sql_modules.definition like '%' + t.name + '%'
where t.type = 'U'
and sys.objects.name is null
order by t.name, type_desc, foundin
Si en comentario la línea con la condición IS NULL, a encontrar todos ocurrencias de todos los nombres de tabla en el código TSQL. (no importa si el nombre de la tabla realmente se refiere a esa tabla)
probaré esto y le contaré cómo funciona. – Xaisoft
+1 Estaba buscando una forma de encontrar referencias de tablas en vistas/procedimientos y con pequeñas modificaciones esto funciona perfectamente para eso. –
Esto funciona bastante bien para los procedimientos almacenados pero es necesario relajar la restricción t.type = 'U' para t.type IN ('U', 'P') – Roman
- 1. Consulta de TSQL para encontrar procedimientos almacenados no utilizados
- 2. Procedimientos almacenados vs. Vistas
- 3. encontrar todas las tablas no referenciadas en los procedimientos almacenados
- 4. MySQL: Vistas vs Procedimientos almacenados
- 5. Cómo ignorar tablas/procedimientos almacenados/vistas específicos en SSDT
- 6. Procedimientos almacenados y funciones
- 7. Funciones vs procedimientos almacenados
- 8. Patrones para procedimientos almacenados?
- 9. Tablas temporales en procedimientos almacenados
- 10. ¿Cómo encontrar los procedimientos almacenados por nombre?
- 11. Cómo encontrar el número de procedimientos almacenados, tablas, funciones presentes en una base de datos
- 12. ¿Los procedimientos almacenados bloquean las tablas/filas?
- 13. Cómo encontrar tablas no utilizadas en SQL Server
- 14. Mejores lenguajes que SQL para procedimientos almacenados
- 15. Analizador de tablas y columnas SQL para procedimientos almacenados
- 16. ¿Cómo puedo encontrar llamadas a procedimientos almacenados?
- 17. ¿Cómo encontrar qué procedimientos almacenados usan qué índices?
- 18. Buscar Funciones públicas no utilizadas
- 19. Procedimientos almacenados Ingeniería inversa
- 20. SQL para buscar objetos, incluidos los procedimientos almacenados, en Oracle
- 21. T-SQL ¿Cómo crear tablas dinámicamente en procedimientos almacenados?
- 22. WebMatrix y procedimientos almacenados
- 23. Soltar grupo de procedimientos almacenados por nombre
- 24. Encontrar todos los procedimientos almacenados Llamada a una función
- 25. Procedimientos almacenados a archivos .sql
- 26. Versiones de procedimientos almacenados
- 27. cambios de versión para procedimientos almacenados
- 28. Lista de procedimientos almacenados/funciones Línea de comandos de Mysql
- 29. ¿Es SaveChanges() necesario con las importaciones de funciones (procedimientos almacenados)?
- 30. instrucción SQL para obtener nombres de tablas, vistas y procesos almacenados, orden por esquema
¿Cuál es la tabla que "no se está utilizando"? ¿Te refieres a tablas vacías? –
No, me refiero a tablas que no se utilizan en procedimientos almacenados, vistas, funciones, etc. Supongamos que creé una base de datos hace un tiempo y tiene cientos de tablas y algunas se han vuelto obsoletas, pero no estoy seguro, así que antes ve a empezar a tirar tablas, quiero averiguar si están en uso. No entiendo por qué esta pregunta fue votada, parece una pregunta muy válida y sensata. – Xaisoft
Tal vez cambie el título de "secuencia de comandos T-SQL para encontrar tablas a las que no hacen referencia los procedimientos almacenados, las vistas y las funciones". – shufler