LarsFosdal icon

SQL Server Finding fields with a specific value in any table

LarsFosdal | PRO | 06/26/14 12:17:29 PM UTC | 0 ⭐ | 766 👁️ | Never ⏰ | []
T-SQL |

1.89 KB

|

None

|

0 👍

/

0 👎

/****** Object:  StoredProcedure [dbo].[p_UTIL_FindFields]    Script Date: 26-Jun-14 12:16:05 ******/
/* Written by Lars Fosdal, http://plus.lars.fosdal.com */
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[p_UTIL_FindFields]
(   @Name  NVARCHAR(255),
    @Value NVARCHAR(255),
    @Verbose BIT = 0
)
AS
BEGIN
 
    PRINT N'[dbo].[p_UTIL_FindFields] @Name = N''' + @NAME + ''', @Value = N''' + @Value + ''''
    Print 'Finding Fields with names like ' + @Name + ' where value = ' + @Value
 
    DECLARE @iCount int
    DECLARE @iTables int = 0
    DECLARE @iErrors int = 0
    DECLARE @sSQL NVARCHAR(MAX)
    DECLARE @sSQLParams NVARCHAR(255)
    DECLARE @sColName NVARCHAR(255)
    DECLARE @sTableName NVARCHAR(255)
 
    DECLARE sTableList CURSOR FOR
       SELECT c.name AS ColName, t.name AS TableName
       FROM sys.columns c
          JOIN sys.tables t ON c.object_id = t.object_id
       WHERE c.name LIKE @Name
 
    OPEN sTableList
 
    FETCH NEXT FROM sTableList
    INTO @sColName, @sTableName
    WHILE @@FETCH_STATUS = 0 
    BEGIN       
    IF @Verbose = 1 PRINT @sTableName + '.' + @sColName
 
    SET @sSQL = 'select @countOut = count(*) from ' + @sTableName + ' where ' + @sColName + ' =  ' + @Value;
    SET @sSQLParams = N'@countOut int OUTPUT';
       
    BEGIN TRY
          SET @iTables = @iTables + 1
      EXECUTE sp_executesql @sSQL, @sSQLParams, @countOut = @iCount OUTPUT;
          IF @iCount > 0 PRINT @sSQL + ' returns ' + Convert(nvarchar(50), @iCount) 
        END TRY
        BEGIN CATCH
      IF @Verbose = 1 PRINT N'Not testable'
          SET @iErrors = @iErrors + 1
    END CATCH 
       
        FETCH NEXT FROM sTableList
       INTO @sColName, @sTableName
    END
    PRINT N'Checked ' + Convert(nvarchar(50), @iTables) + ' table and column combos with ' + Convert(nvarchar(50), @iErrors) + ' errors'
 
    CLOSE sTableList
    DEALLOCATE sTableList
 
END

Comments