SQL To Search Every Column Of Every Table

I was trying to export a site that had been moved from a MOSS farm to a WSS farm and was getting an error that a list did not exist.  Well, I’ve fought with this particular web application for quite a while and was sick of getting stupid little errors because of the move from MOSS to WSS.  So, I was able to find a SQL Stored Procedure that I could use to delete all references to the “orphaned” list.

I found this Stored Procedure on Vyas Kondreddi’s website.

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
Related Posts with Thumbnails
Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay

Leave a Reply