2009-08-12 20 views
31

Estoy trabajando en un SQL Server 2008 Db que tiene muchas tablas (alrededor de 200). Muchas de estas tablas contienen un campo con el nombre "CreatedDate". Estoy tratando de identificar todo el esquema de la tabla con este campo en particular.Consulta SQL al esquema de búsqueda de todas las tablas

¿Hay una consulta SQL para hacer esto?

Respuesta

46

Me consultar la INFORMATION_SCHEMA - esto tiene puntos de vista que son mucho más legible que las tablas subyacentes.

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE '%create%' 
+0

¡Funcionó! Mejor versión también. – pencilslate

5
select object_name(c.object_id) as table_name 
    , schema_name(t.schema_id) as schema_name 
    from sys.columns c 
    join sys.tables t on c.object_id = t.object_id 
    where c.name=N'CreatedDate'; 

se pone un poco más complicado si quieren alsoother propiedades de la tabla, pero que en adelante nos referiremos a las vistas de catálogo objeto como sys.tables, etc. sys.columns

+0

tengo el error 'nombre de columna no válido 'schema_id' T – pencilslate

+1

¡Su trabajo! seleccione object_name (sc.object_id) como table_name , schema_name (st.schema_id) como schema_name de sys.columns sc, sys.tables st donde sc.name = N'CreatedDate '; – pencilslate

+0

wrigth, estaba escribiendo la consulta de memoria, olvidé sys.columns no almacena el esquema. –

0

lo mismo pero de manera ANSI

SELECT * DE INFORMATION_SCHEMA.TABLES DONDE TABLE_NAME EN (SELECCIONAR TABLE_NAME DE INFORMATION_SCHEMA.COLUMNS DONDE COLUMN_NAME = 'CreateDate' )

2

Mi preferido ...

SELECT objParent.name AS parent, obj.name, col.* 
FROM sysobjects obj 
    LEFT JOIN syscolumns col 
     ON obj.id = col.id 
    LEFT JOIN sysobjects objParent 
     ON objParent.id = obj.parent_obj 
WHERE col.name LIKE '%Comment%' 
    OR obj.name LIKE '%Comment%' 

encima estoy en busca de "Comentario".

Coloque los signos de porcentaje si desea una coincidencia directa.

Esto busca en las tablas, campos y cosas como nombres de clave primaria, restricciones, vistas, etc.

Y cuando se quiere buscar en StoredProcs después de monerías con las tablas (y la necesidad de hacer que el partido procsos), de uso el siguiente ...

SELECT name 
FROM sys.procedures 
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%Comment%' 

Espero que ayude, encuentro que estas dos consultas son extremadamente útiles.

0

Usted no necesita escribir consultas SQL para esto en SQL Server 2008.

En el Explorador de objetos SSMS elija Bases de datos o tablas de la base de datos necesaria (si es necesario buscar en una base de datos) menús, abierta Ver- -> Detalles de Object Explorer (alternativamente, presione F7), escriba% CreatedDate% en el cuadro de texto de búsqueda, ENTER, disfrútelo

+0

notablemente esto no funcionó; encuentra cualquier otro tipo de objeto que SSMS muestra en su navegador –

6

También puede intentar hacerlo utilizando una de las herramientas de terceros que están disponibles para esto.

Las consultas son geniales para realizar búsquedas simples, pero si necesita manipular más datos, busque referencias y es aquí donde puede hacer un mejor trabajo con estos.

Además, estos vienen en muy útil cuando se cifran algunos objetos y hay que buscar

estoy usando ApexSQL Search que es libre, pero también hay muchos más (también gratuito) en el mercado, tales como Red Gate o SSMS Tool Pack.

1

Utilice esta consulta:

SELECT 
    t.name AS table_name, 
    SCHEMA_NAME(schema_id) AS schema_name, 
    c.name AS column_name , * 
FROM sys.tables AS t 
    INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID 
Where 
    (c.name LIKE '%' + '<ColumnName>' + '%') 
    AND 
    (t.type = 'U') -- Use This To Prevent Selecting System Tables 
1

Para mí sólo me tener acceso de lectura a ejecutar querys así que necesito para usar esta función a menudo aquí es lo que yo uso:

SELECT * 
FROM INFORMATION_SCHEMA.TABLES 
where TABLES.TABLE_NAME like '%your table name here%' 

Puede reemplazar. Tablas con .Columns entonces se vería así:

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE columns.COLUMN_NAME like '%your column name here%' 
Cuestiones relacionadas