Feb - 7 - 2012
                                                                                   
Como buscar un string en cualquier Base de Datos Hits: 658
post

Como buscar un string en cualquier  Base de Datos

 

Como la mayoria de los que trabajan con Bases de Datos sabrán, todas las tablas están relacionadas con alguna otra dentro de una base de datos...
Buen, el tema es que uno a medida que trabaja con una Base, se va aprendiendo las tablas y como estan vinculadas y eso...
Pero viste que siempre te queda una tabla que no tenes idea de en donde está, ni como se llama, y te jode la vida porque tenes referenciada otra tabla y AHAHAHHHHHHHH!!!!

Bueno, me acaba de pasar a mi
Ta, SQL, ta (Y)

En fin... encontre este StoredProcedure RE-COPANTE:

Paso 1: Copiar todo este texto en el SQL y ejecutarlo asi como está. (Con esto se crea solo)

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

-- Follow me on Twitter @Lorenzmaister

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


Paso 2: Ya con esto tenes el StoredProcedure creado. Lo unico que tenes que hacer es escribir la siguiente linea para ejecutarlo, incluyendo la palabra o string que queres buscar. Por ejemplo:

EXEC SearchAllTables 'HOLASOYLATABLAQUETEJODIALAVIDA'
GO


Lo que les devuelve esto es la la tabla en donde se encontro ese string que pusieron y en que columna y row está.

fuente: taringa.net

Como buscar un string en cualquier  Base de Datos
relatedArticles

Impresiones: 658

 

Buscar Dentro De Esta Web

Búsqueda personalizada
-