Sometimes it happens that we forget where something was in the database. This Stored Procedure allows for searching every table and every field and returns a passed value. It's a powerful tool for searching but its not to be used in Programming.
  1. Create PROC [dbo].[SearchWordsInAllTables]
  2. (
  3. @SearchStr nvarchar(100)
  4. )
  5. AS
  6. BEGIN
  7. CREATE
  8. TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
  9. SET
  10. NOCOUNT
  11. ON
  12. DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
  13. SET @TableName =
  14. ''
  15. SET @SearchStr2 =
  16. QUOTENAME('%'
  17. + @SearchStr +
  18. '%','''')
  19. WHILE @TableName IS
  20. NOT
  21. NULL
  22. BEGIN
  23. SET @ColumnName =
  24. ''
  25. SET @TableName =
  26. (
  27. SELECT
  28. MIN(QUOTENAME(TABLE_SCHEMA)
  29. +
  30. '.'
  31. +
  32. QUOTENAME(TABLE_NAME))
  33. FROM INFORMATION_SCHEMA.TABLES
  34. WHERE TABLE_TYPE =
  35. 'BASE TABLE'
  36. AND QUOTENAME(TABLE_SCHEMA)
  37. +
  38. '.'
  39. +
  40. QUOTENAME(TABLE_NAME)
  41. > @TableName
  42. AND OBJECTPROPERTY(
  43. OBJECT_ID(
  44. QUOTENAME(TABLE_SCHEMA)
  45. +
  46. '.'
  47. +
  48. QUOTENAME(TABLE_NAME)
  49. ),
  50. 'IsMSShipped'
  51. )
  52. = 0
  53. )
  54. WHILE
  55. (@TableName IS
  56. NOT
  57. NULL)
  58. AND
  59. (@ColumnName IS
  60. NOT
  61. NULL)
  62. BEGIN
  63. SET @ColumnName =
  64. (
  65. SELECT
  66. MIN(QUOTENAME(COLUMN_NAME))
  67. FROM INFORMATION_SCHEMA.COLUMNS
  68. WHERE TABLE_SCHEMA =
  69. PARSENAME(@TableName, 2)
  70. AND TABLE_NAME =
  71. PARSENAME(@TableName, 1)
  72. AND DATA_TYPE IN
  73. ('char',
  74. 'varchar',
  75. 'nchar',
  76. 'nvarchar')
  77. AND QUOTENAME(COLUMN_NAME)
  78. > @ColumnName
  79. )
  80. IF @ColumnName IS
  81. NOT
  82. NULL
  83. BEGIN
  84. INSERT
  85. INTO #Results
  86. EXEC
  87. (
  88. 'SELECT '''
  89. + @TableName +
  90. '.'
  91. + @ColumnName +
  92. ''', LEFT('
  93. + @ColumnName +
  94. ', 3630)
  95. FROM '
  96. + @TableName +
  97. ' (NOLOCK) '
  98. +
  99. ' WHERE '
  100. + @ColumnName +
  101. ' LIKE '
  102. + @SearchStr2
  103. )
  104. END
  105. END
  106. END
  107. SELECT ColumnName, ColumnValue FROM #Results
  108. END
Exec [SearchWordsInAllTables] 'gmail'