sql-server - procedimiento - listar todas las tablas de una base de datos sql server
Consulta SQL para buscar el esquema de todas las tablas (8)
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.
¿Hay una consulta SQL para hacer esto?
Lo mismo pero en forma ANSI
SELECCIONAR * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME IN (SELECCIONAR TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = ''CreateDate'')
Me gustaría consultar el information_schema - esto tiene vistas que son mucho más legibles que las tablas subyacentes.
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE ''%create%''
Mi favorito...
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%''
Arriba, estoy buscando "Comentario".
Suelta los signos de porcentaje si quieres una coincidencia directa.
Esto busca tablas, campos y cosas como nombres de teclas principales, restricciones, vistas, etc.
Y cuando desee buscar en StoredProcs después de monkear con las tablas (y necesite hacer coincidir los procs), use lo siguiente ...
SELECT name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE ''%Comment%''
Espero que ayude, creo que estas dos consultas son extremadamente útiles.
No necesita escribir SQL Query para esto en SQL Server 2008.
En SSMS Object Explorer elija Bases de datos o Tablas de la base de datos requerida (si necesita buscar en una base de datos), abra el menú Vista -> Detalles del Explorador de objetos (alternativamente presione F7), escriba% CreatedDate% en el cuadro de texto Buscar, ENTER, disfrútelo
Para mí, solo tengo acceso de lectura para ejecutar las consultas, así que necesito usar esta función a menudo, aquí está lo que uso:
SELECT *
FROM INFORMATION_SCHEMA.TABLES
where TABLES.TABLE_NAME like ''%your table name here%''
Puede reemplazar .TABLES con .COLUMNS luego se vería así:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE columns.COLUMN_NAME like ''%your column name here%''
También puede intentar hacer esto usando una de las muchas herramientas de terceros que están disponibles para esto.
Las consultas son geniales para búsquedas simples, pero si necesita hacer más manipulación con datos, busque referencias y tal es aquí donde puede hacer un mejor trabajo con estos.
Además, estos son muy útiles cuando algunos objetos están encriptados y necesitas buscar
Estoy usando ApexSQL Search, que es gratuito, pero también hay muchos más (también gratuitos) en el mercado, como Red Gate o SSMS Tool Pack.
Use 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
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 vuelve un poco más complicado si quiere también otras propiedades de la tabla, pero se referirá a las vistas del catálogo de objetos como sys.tables , sys.columns , etc.