Buscar una columna en toda la base
Señal o problema observado
Una pantalla, un error o un requisito menciona IdCliente, pero todavía no sabemos qué tablas guardan ese dato. El nombre de una columna suele ser una pista útil para empezar a reconstruir el modelo.
Qué necesitamos distinguir
No basta con devolver una lista de nombres. Queremos saber en qué esquema y tabla aparece cada coincidencia, cuál es su tipo, si acepta NULL y si SQL Server genera su valor.
Consulta
DECLARE @Patron SYSNAME = N'%IdCliente%';
SELECT
s.name AS Esquema,
t.name AS Tabla,
c.name AS Columna,
ty.name AS TipoDato,
CASE
WHEN c.max_length = -1 THEN N'MAX'
WHEN ty.name IN (N'nchar', N'nvarchar')
THEN CONVERT(NVARCHAR(10), c.max_length / 2)
ELSE CONVERT(NVARCHAR(10), c.max_length)
END AS Longitud,
c.precision AS Precision,
c.scale AS Escala,
c.is_nullable AS AceptaNull,
c.is_identity AS EsIdentity,
c.is_computed AS EsCalculada
FROM sys.tables AS t
INNER JOIN sys.schemas AS s
ON s.schema_id = t.schema_id
INNER JOIN sys.columns AS c
ON c.object_id = t.object_id
INNER JOIN sys.types AS ty
ON ty.user_type_id = c.user_type_id
WHERE t.is_ms_shipped = 0
AND c.name LIKE @Patron
ORDER BY
s.name,
t.name,
c.column_id;
Parámetros o permisos
Cambia @Patron por el nombre completo o parcial. La comparación respeta la intercalación de la base: según su configuración, puede distinguir o ignorar mayúsculas, minúsculas y acentos.
sys.columns.max_length se expresa en bytes. Por eso la consulta divide entre dos la longitud de nchar y nvarchar. En tipos numéricos, Precision y Escala suelen ser más informativas que Longitud.
La cuenta debe tener visibilidad sobre las tablas consultadas. La búsqueda se limita a tablas de usuario de la base actual; no incluye vistas en esta versión de la consulta.
Cómo leer el resultado
Cada fila corresponde a una columna. Dos coincidencias con el mismo nombre no garantizan que representen la misma entidad: IdCliente puede ser llave primaria en una tabla, llave foránea en otra o simplemente un dato sin restricción declarada.
AceptaNull = 1 indica que la definición permite valores NULL. EsIdentity = 1 significa que la columna tiene la propiedad IDENTITY; no demuestra por sí mismo que sea llave primaria. EsCalculada = 1 indica que su valor procede de una expresión.
Para una búsqueda exacta cambia la última condición:
AND c.name = N'IdCliente'
Qué conclusión sí permite obtener
Permite identificar las tablas visibles que contienen una columna coincidente y revisar propiedades estructurales básicas de cada aparición.
Qué conclusión todavía no permite obtener
El nombre no demuestra significado, calidad ni procedencia del dato. La consulta tampoco confirma que dos columnas estén relacionadas, que contengan valores compatibles o que una aplicación realmente las utilice.
Una columna ausente puede estar en otra base, una vista, un sinónimo, un documento JSON o bajo un nombre inesperado.
Siguiente comprobación razonable
Revisa las llaves foráneas, llaves e índices relacionados. Si necesitas localizar dónde se lee o modifica la columna dentro de objetos SQL, continúa con la búsqueda textual y después contrasta el resultado con las dependencias registradas.