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