SQL Server - BUSCAR CAMPO EN TODAS LAS TABLAS

 
Vista:

BUSCAR CAMPO EN TODAS LAS TABLAS

Publicado por Oz (3 intervenciones) el 16/05/2007 22:29:49
Hola amigos quisiera saber si en SQL SERVER se puede hacer una consulta donde me diga en que tablas aparece un determinado campo

En concreto quiero saber por el medio de la id de empleado, cuales tablas tiene relacionadas

SALUDOS Y GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:BUSCAR CAMPO EN TODAS LAS TABLAS

Publicado por Isaías (3308 intervenciones) el 16/05/2007 23:57:42
¿un determinado campo (nombre del campo)?, o ¿el valor contenido de un determinado campo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BUSCAR CAMPO EN TODAS LAS TABLAS

Publicado por Oz (3 intervenciones) el 17/05/2007 00:00:53
El valor de un determinado campo, quiero saber las tablas que lo tienen

Si sabes la consulta, te lo agradezco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BUSCAR CAMPO EN TODAS LAS TABLAS

Publicado por Isaías (3308 intervenciones) el 17/05/2007 01:18:55
Entonces, entiendo que quieres buscar "computer" en cualquier campo de cualquier tabla, esto resuelve tu problema:

-- Buscar un dato en TODAS las columnas de TODAS las tablas
Create this procedure in the required database and here is how you run it:

--To search all columns of all tables in Pubs database for the keyword
"Computer"
EXEC SearchAllTables 'Computer'
GO

Here is the complete stored procedure code:

CREATE PROC SearchAllTables
(
@SearchStr nvarchar(100)
)
AS
BEGIN

-- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.
-- Purpose: To search all columns of all tables for a given search string
-- Written by: Narayana Vyas Kondreddi
-- Site: http://vyaskn.tripod.com
-- Tested on: SQL Server 7.0 and SQL Server 2000
-- Date modified: 28th July 2002 22:50 GMT

CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))

SET NOCOUNT ON

DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2
nvarchar(110)
SET @TableName = ''
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')

WHILE @TableName IS NOT NULL
BEGIN
SET @ColumnName = ''
SET @TableName =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
AND OBJECTPROPERTY(
OBJECT_ID(
QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
), 'IsMSShipped'
) = 0
)

WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
AND TABLE_NAME = PARSENAME(@TableName, 1)
AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
AND QUOTENAME(COLUMN_NAME) > @ColumnName
)

IF @ColumnName IS NOT NULL
BEGIN
INSERT INTO #Results
EXEC
(
'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' +
@ColumnName + ', 3630)
FROM ' + @TableName + ' (NOLOCK) ' +
' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
)
END
END
END

SELECT ColumnName, ColumnValue FROM #Results
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BUSCAR CAMPO EN TODAS LAS TABLAS

Publicado por Oz (3 intervenciones) el 17/05/2007 16:08:54
Viejo disculpa la insistencia esta buena tu consulta, espero funcione pero no me reconoce el 'SearchAllTables'

Msg 2812, Level 16, State 62, Line 3
Could not find stored procedure 'SearchAllTables'.
Msg 156, Level 15, State 1, Procedure SearchAllTables, Line 60
Incorrect syntax near the keyword 'SELECT'.
Msg 102, Level 15, State 1, Procedure SearchAllTables, Line 62
Incorrect syntax near '+'.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BUSCAR CAMPO EN TODAS LAS TABLAS

Publicado por Isaías (3308 intervenciones) el 17/05/2007 21:30:33
Compañero

PRIMERO, debes ejecutar la rutina de CREACION del store en tu Analizador de consultas

CREATE PROCEDURE..............
....................................
....................................
....................................
............................HASTA EL
END

Una vez creado el store, entonces si, puedes usarlo.

exec SearchAllTables 'ROGELIO ROBLES'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BUSCAR CAMPO EN TODAS LAS TABLAS

Publicado por Oz (1 intervención) el 18/05/2007 00:20:56
Perdona estoy nuevo en STORE PROCEDURE lo hice como dijiste y funciono

Oye Muchas gracias!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BUSCAR CAMPO EN TODAS LAS TABLAS

Publicado por Isaías (3308 intervenciones) el 18/05/2007 00:25:41
Perdon OZ, desconocia tu nivel de SQL Server.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar