¿Hay alguna forma de buscar una cadena en todas las tablas de una base de datos en SQL Server Management Studio 2008?
Quiero buscar por decir cuerda john
. El resultado debe mostrar las tablas y sus respectivas filas que contienen john
.
sql
sql-server
search
Ramiz Raja
fuente
fuente
Respuestas:
Si es como yo y tiene ciertas restricciones en un entorno de producción, es posible que desee utilizar una variable de tabla en lugar de una tabla temporal y una consulta ad-hoc en lugar de un procedimiento de creación.
Por supuesto, dependiendo de su instancia de servidor sql, debe admitir variables de tabla.
También agregué una declaración USE para reducir el alcance de búsqueda
fuente
Un poco tarde pero con suerte útil.
¿Por qué no probar algunas de las herramientas de terceros que se pueden integrar en SSMS?
He trabajado con ApexSQL Search (100% gratis) con mucho éxito tanto para la búsqueda de esquemas como de datos y también hay un paquete de herramientas SSMS que tiene esta característica (no es gratis para SQL 2012 pero es bastante asequible).
El procedimiento almacenado anterior es realmente genial; es solo que esto es mucho más conveniente en mi opinión. Además, requeriría algunas modificaciones leves si desea buscar columnas de fecha y hora o columnas GUID y tal ...
fuente
Para actualizar la respuesta de TechDo para SQL Server 2012. Debe cambiar:
'FROM ' + @TableName + ' (NOLOCK) '
aFROM ' + @TableName + 'WITH (NOLOCK) ' +
De lo contrario, obtendrá el siguiente error:
Deprecated feature 'Table hint without WITH' is not supported in this version of SQL Server.
A continuación se muestra el procedimiento almacenado actualizado completo:
fuente
Un poco tarde, pero puede encontrar fácilmente una cadena con esta consulta
fuente
He escrito un SP para esto que devuelve los resultados de búsqueda en forma de nombre de tabla, los nombres de columna en los que se encontró la cadena de palabras clave de búsqueda, así como las búsquedas en las filas correspondientes como se muestra en la siguiente captura de pantalla.
Puede que esta no sea la solución más eficiente, pero siempre puede modificarla y usarla según sus necesidades.
fuente
No hay necesidad de bucle anidado (bucle externo a través de tablas y bucle interno a través de todas las columnas de la tabla). Uno puede recuperar todas las combinaciones de tabla-columna (o arbitrarias seleccionadas / filtradas) de
INFORMATION_SCHEMA.COLUMNS
y en un bucle simplemente pasar (buscar) todas ellas:fuente
curTabCol
selecciona todas las combinaciones de tabla.columna de interés. Luego busca en todas estas columnas la cadena dada en la variable @search. Si existe una cadena (exacta) en esta consulta SQL (de lo contrario, utilice LIKE '% ...%'), se imprime la combinación de nombre de tabla y columna.Esto fue muy útil. Quería importar esta función a una base de datos SQL de Postgre. Pensé que lo compartiría con cualquiera que esté interesado. Los tendrá unas horas. Nota: esta función crea una lista de sentencias SQL que se pueden copiar y ejecutar en la base de datos Postgre. Quizás alguien más inteligente que yo pueda hacer que Postgre cree y ejecute las declaraciones en una sola función.
fuente
La respuesta que se mencionó en esta publicación ya la adopté varias veces, porque también necesitaba buscar en una sola tabla:
(y también hizo que la entrada para el nombre de la tabla sea un poco más simple)
fuente