Descripción de la necesidad general de encontrar datos y objetos en una base de datos.
La búsqueda de datos, así como los procedimientos almacenados, tablas y otros objetos en la base de datos es un tema bastante relevante, incluso para los desarrolladores de C #, así como para el desarrollo de .NET en general.
Muy a menudo, puede surgir una situación en la que necesite encontrar:
- objeto de base de datos (tabla, vista, procedimiento almacenado, función, etc.)
- datos (valor y en qué tabla se encuentra)
- fragmento de código en definiciones de objeto de base de datos
Hay muchas soluciones preparadas, tanto de pago como gratuitas.
Primero, veremos cómo puede buscar datos y objetos en una base de datos usando las herramientas DBMS incorporadas, y luego veremos cómo hacerlo usando la utilidad gratuita
dbForge Search .
Buscar usando las herramientas DBMS incorporadas
Puede determinar si la tabla de empleados está en la base de datos utilizando el siguiente script:
Buscar tabla por nombreselect [object_id], [schema_id], schema_name([schema_id]) as [schema_name], [name], [type], [type_desc], [create_date], [modify_date] from sys.all_objects where [name]='Employee';
El resultado podría ser algo como esto:

Aquí se muestran:
- identificadores del objeto y el esquema donde se encuentra el objeto
- el nombre de este circuito y el nombre de este objeto
- tipo de objeto y descripción de este tipo de objeto
- fecha y hora de creación y última modificación del objeto
Para encontrar todas las apariciones de la línea "Proyecto", puede usar el siguiente script:
Buscar todos los objetos por subcadena en un nombre select [object_id], [schema_id], schema_name([schema_id]) as [schema_name], [name], [type], [type_desc], [create_date], [modify_date] from sys.all_objects where [name] like '%Project%';
El resultado podría ser algo como esto:

Como puede ver en el resultado, aquí la subcadena "Proyecto" contiene no solo dos tablas Project y ProjectSkill, sino también algunas claves primarias y externas.
Para comprender a quién pertenecen exactamente estas claves, agregamos a la salida el campo parent_object_id y su nombre y el esquema en el que se ubica de la siguiente manera:
Busque todos los objetos por subcadena en el nombre con la salida de los objetos principales select ao.[object_id], ao.[schema_id], schema_name(ao.[schema_id]) as [schema_name], ao.parent_object_id, p.[schema_id] as [parent_schema_id], schema_name(p.[schema_id]) as [parent_schema_name], p.[name] as [parent_name], ao.[name], ao.[type], ao.[type_desc], ao.[create_date], ao.[modify_date] from sys.all_objects as ao left outer join sys.all_objects as p on ao.[parent_object_id]=p.[object_id] where ao.[name] like '%Project%';
El resultado será una tabla con información detallada sobre los objetos principales, es decir, donde se definen las claves primarias y externas:

Los siguientes objetos del sistema se utilizan en consultas:
Entonces, descubrimos cómo encontrar objetos en la base de datos utilizando las herramientas DBMS incorporadas.
Ahora mostramos cómo encontrar datos en la base de datos usando el ejemplo de búsqueda de cadenas.
Para encontrar el valor de cadena para todas las tablas de la base de datos, puede usar la siguiente
solución . Simplificamos esta solución y mostramos cómo puede encontrar, por ejemplo, el valor de "Ramiro" utilizando el siguiente script:
Busque valores de cadena por subcadena en todas las tablas de la base de datos set nocount on declare @name varchar(128), @substr nvarchar(4000), @column varchar(128) set @substr = '%Ramiro%' declare @sql nvarchar(max); create table
El resultado de la ejecución puede ser así:

Los nombres de las tablas se muestran aquí y en qué columnas se almacena el valor que contiene la subcadena "Ramiro". Además del número de entradas de esta subcadena encontradas para el par tabla-columna encontrado.
Para buscar objetos en las definiciones de las cuales hay un código dado, puede usar las siguientes vistas del sistema:
- sys.sql_modules
- sys.all_sql_modules
- sys.syscomments
Por ejemplo, usando la última vista, puede usar la siguiente secuencia de comandos para buscar todos los objetos en las definiciones de las cuales se encuentra un fragmento de código dado:
Buscar fragmentos de código en definiciones de objeto de base de datos select obj.[object_id], obj.[name], obj.[type_desc], sc.[text] from sys.syscomments as sc inner join sys.objects obj on sc.[id]=obj.[object_id] where sc.[text] like '%code snippet%';
El identificador, el nombre, la descripción y la definición completa del objeto se mostrarán aquí.
Busque con la herramienta de búsqueda gratuita dbForge
Sin embargo, es más conveniente buscar utilizando buenas herramientas listas para usar. Una de esas herramientas es
dbForge Search .
Para llamar a esta utilidad en la ventana
SSMS, haga clic en el botón

.
Aparecerá el siguiente cuadro de búsqueda:

Presta atención al panel superior (de izquierda a derecha):
- puede cambiar el modo de búsqueda (buscando DDL (objetos) o datos)
- directamente lo que estamos buscando (qué subcadena)
- si se distingue entre mayúsculas y minúsculas, busca la coincidencia exacta de palabras, busca ocurrencias:

- resultado del grupo por tipo de objeto - botón

- seleccione los tipos de objetos necesarios para buscar:

- También puede especificar varias bases de datos para buscar y seleccionar una instancia de MS SQL Server
Todo esto está en modo de búsqueda de objetos, es decir, cuando DDL está habilitado:

En el modo de búsqueda de datos, solo cambiará la elección de los tipos de objeto:

A saber, solo las tablas estarán disponibles para la selección, donde se almacenan los datos en sí:

Ahora, como antes, encontraremos todas las apariciones de la subcadena "Proyecto" en los nombres de los objetos:

Como puede ver, se seleccionó el modo de búsqueda para objetos DDL, se completó que estamos buscando la línea "Proyecto", el resto fue todo por defecto.
Al resaltar un objeto encontrado, el código de definición de este objeto o su objeto padre completo se muestra a continuación.
También puede mover la navegación al objeto encontrado haciendo clic en el botón

:

También puede agrupar objetos encontrados por su tipo:

Tenga en cuenta que incluso esas tablas se muestran en las que hay campos cuyos nombres contienen la subcadena "Proyecto". Sin embargo, recuerde que el modo de búsqueda se puede cambiar: para buscar cumplimiento total / parcial / sensible a mayúsculas o minúsculas o no.
Ahora encontramos el valor "Ramiro" en todas las tablas:

Observe que todas las filas que contienen la subcadena "Ramiro" de la tabla de empleados seleccionada se muestran a continuación.
También puede mover la navegación al objeto encontrado presionando el botón como antes

:

Por lo tanto, podemos buscar los objetos y datos necesarios en la base de datos.
Conclusión
Las formas de buscar tanto los datos en sí como los objetos en la base de datos se examinaron utilizando las herramientas integradas del MS SQL Server DBMS y utilizando la utilidad gratuita
dbForge Search .
Devart también tiene una serie de otras soluciones gratuitas listas para usar, una lista completa de las cuales se puede encontrar
aquí .
Fuentes