Mostrando las entradas con la etiqueta encontrar columna en la base de datos. Mostrar todas las entradas
Mostrando las entradas con la etiqueta encontrar columna en la base de datos. Mostrar todas las entradas

martes, 25 de septiembre de 2018

131. Buscar una columna en toda la base de datos

Les dejo este script que les permite encontrar una columa en una base de datos

DECLARE @StrValorBusqueda NVARCHAR(100)

SET @StrValorBusqueda = '[Columna]'

CREATE TABLE #Resultado (NombreColumna NVARCHAR(370))

SET NOCOUNT ON

DECLARE @NombreTabla NVARCHAR(256)
,@NombreColumna NVARCHAR(128)

SET @NombreTabla = ''

WHILE @NombreTabla IS NOT NULL
BEGIN
PRINT @NombreTabla

SET @NombreColumna = ''
SET @NombreTabla = (
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @NombreTabla
AND OBJECTPROPERTY(OBJECT_ID(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)), 'IsMSShipped') = 0
)

WHILE (@NombreTabla IS NOT NULL)
AND (@NombreColumna IS NOT NULL)
BEGIN
if @NombreColumna like ('%' + @StrValorBusqueda + '%')
Begin
insert into #Resultado values(@NombreTabla + '.' + @NombreColumna)
End
SET @NombreColumna = (
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@NombreTabla, 2)
AND TABLE_NAME = PARSENAME(@NombreTabla, 1)
AND DATA_TYPE IN (
'char'
,'varchar'
,'nchar'
,'nvarchar'
)
AND QUOTENAME(COLUMN_NAME) > @NombreColumna
)
END
END

SELECT NombreColumna
FROM #Resultado