1. DECLARE @SearchStr nvarchar(200) = N'使用者本文'  
  2.   
  3.   
  4. -- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.  
  5. -- Purpose: To search all columns of all tables for a given search string  
  6. -- Written by: Narayana Vyas Kondreddi  
  7. -- Site: http://vyaskn.tripod.com  
  8. -- Tested on: SQL Server 7.0 and SQL Server 2000  
  9. -- Date modified: 28th July 2002 22:50 GMT  
  10.   
  11.   
  12. CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))  
  13.   
  14. SET NOCOUNT ON  
  15.   
  16. DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)  
  17. SET  @TableName = ''  
  18. SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')  
  19.   
  20. WHILE @TableName IS NOT NULL  
  21. BEGIN  
  22.     SET @ColumnName = ''  
  23.     SET @TableName =   
  24.     (  
  25.         SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))  
  26.         FROM    INFORMATION_SCHEMA.TABLES  
  27.         WHERE       TABLE_TYPE = 'BASE TABLE'  
  28.             AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName  
  29.             AND OBJECTPROPERTY(  
  30.                     OBJECT_ID(  
  31.                         QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)  
  32.                          ), 'IsMSShipped'  
  33.                            ) = 0  
  34.     )  
  35.   
  36.     WHILE (@TableName IS NOT NULLAND (@ColumnName IS NOT NULL)  
  37.     BEGIN  
  38.         SET @ColumnName =  
  39.         (  
  40.             SELECT MIN(QUOTENAME(COLUMN_NAME))  
  41.             FROM    INFORMATION_SCHEMA.COLUMNS  
  42.             WHERE       TABLE_SCHEMA    = PARSENAME(@TableName, 2)  
  43.                 AND TABLE_NAME  = PARSENAME(@TableName, 1)  
  44.                 AND DATA_TYPE IN ('char''varchar''nchar''nvarchar')  
  45.                 AND QUOTENAME(COLUMN_NAME) > @ColumnName  
  46.         )  
  47.   
  48.         IF @ColumnName IS NOT NULL  
  49.         BEGIN  
  50.             INSERT INTO #Results  
  51.             EXEC  
  52.             (  
  53.                 'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)   
  54.                 FROM ' + @TableName + ' (NOLOCK) ' +  
  55.                 ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2  
  56.             )  
  57.         END  
  58.     END   
  59. END  
  60.   
  61. SELECT * FROM #Results  
  62.   
  63. DROP TABLE #Results  

 

arrow
arrow
    全站熱搜

    kingjoy1235 發表在 痞客邦 留言(0) 人氣()