¿Hay alguna forma de buscar un valor (en mi caso, es un UID del tipo char(64)
) dentro de cualquier columna de cualquier tabla dentro de una base de datos de MS SQL Server?
Estoy sentado frente a una enorme base de datos sin tener idea de cómo se deben vincular las tablas. Para averiguarlo, me gustaría enumerar todas las tablas y las columnas que contienen un cierto valor en cualquier fila. ¿Es eso posible?
Una forma podría ser simplemente volcar toda la base de datos en un archivo de texto y luego usar cualquier editor de texto para buscar el valor, pero esto sería una auténtica molestia si la base de datos es demasiado grande.
Respuestas:
http://vyaskn.tripod.com/search_all_columns_in_all_tables.htm
EDITAR: Aquí está el T-SQL real, en caso de rotura del enlace:
fuente
Todas las herramientas de terceros mencionadas a continuación son 100% gratuitas.
He usado ApexSQL Search con éxito para buscar tanto objetos como datos en tablas. Viene con varias otras características, como diagramas de relaciones y demás ...
Sin embargo, fui un poco lento en bases de datos grandes (base de datos TFS de 40 GB) ...
Aparte de esto, también hay un paquete de herramientas SSMS que ofrece muchas otras características que son bastante útiles aunque no están directamente relacionadas con la búsqueda de texto.
fuente
Expandí el código, porque no me dijo el '
record number
', y debo volver a encontrarlo.fuente
Fuente: http://fullparam.wordpress.com/2012/09/07/fck-it-i-am-going-to-search-all-tables-all-collumns/
Tengo una solución de hace un tiempo que seguí mejorando. También busca dentro de columnas XML si se le pide que lo haga, o busca valores enteros si proporciona una cadena de solo entero.
fuente
Encontré una solución bastante sólida en https://gallery.technet.microsoft.com/scriptcenter/c0c57332-8624-48c0-b4c3-5b31fe641c58 , que pensé que valía la pena señalar. Busca columnas de estos tipos: varchar, char, nvarchar, nchar, text. Funciona muy bien y admite búsquedas de tablas específicas, así como múltiples términos de búsqueda.
fuente
Hay un buen script disponible en http://www.reddyss.com/SQLDownloads.aspx
Para poder usarlo en cualquier base de datos, puede crearlo como en: http://nickstips.wordpress.com/2010/10/18/sql-making-a-stored-procedure-available-to-all-databases/
No estoy seguro si hay otra forma.
Para usarlo, use algo como esto:
fuente
Después de probar la solución de @ regeter y ver que no resolvió mi problema cuando estaba buscando una clave externa / primaria para ver todas las tablas / columnas donde existe, no funcionó. Después de leer cómo falló para otro que intentó usar un identificador único, hice las modificaciones y aquí está el resultado actualizado: (funciona con int y guids ... verá cómo extender fácilmente)
fuente