Guest User

Untitled

a guest
Jan 12th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.47 KB | None | 0 0
  1. SET nocount ON
  2. DECLARE @name VARCHAR(128), @substr nvarchar(4000), @COLUMN VARCHAR(128)
  3. SET @substr = 'BAED936C-1E44-4E4A-AD32-F3E41CEB7FAC' --фрагмент строки, который будем искать
  4.  
  5. CREATE TABLE #rslt
  6. (TABLE_NAME VARCHAR(128), field_name VARCHAR(128), VALUE uniqueidentifier)
  7.  
  8. DECLARE s cursor FOR SELECT TABLE_NAME AS TABLE_NAME FROM information_schema.TABLES WHERE table_type = 'BASE TABLE' ORDER BY TABLE_NAME
  9. OPEN s
  10. fetch NEXT FROM s INTO @name
  11. while @@fetch_status = 0
  12. BEGIN
  13.  DECLARE c cursor FOR
  14.     SELECT quotename(column_name) AS column_name FROM information_schema.COLUMNS
  15.       WHERE data_type IN ('uniqueidentifier') AND TABLE_NAME  = @name
  16.  SET @name = quotename(@name)
  17.  OPEN c
  18.  fetch NEXT FROM c INTO @COLUMN
  19.  while @@fetch_status = 0
  20.  BEGIN
  21.    print 'Processing table - ' + @name + ', column - ' + @COLUMN
  22.    EXEC('insert into #rslt select ''' + @name + ''' as Table_name, ''' + @COLUMN + ''', ' + @COLUMN +
  23.     ' from' + @name + ' where ' + @COLUMN + ' like ''' + @substr + '''')
  24.    fetch NEXT FROM c INTO @COLUMN
  25.  END
  26.  close c
  27.  deallocate c
  28.  fetch NEXT FROM s INTO @name
  29. END
  30. SELECT TABLE_NAME AS [TABLE Name], field_name AS [FIELD Name], COUNT(*) AS [Found Mathes] FROM #rslt
  31. GROUP BY TABLE_NAME, field_name
  32. ORDER BY TABLE_NAME, field_name
  33. --Если нужно, можем отобразить все найденные значения
  34. --select * from #rslt order by table_name, field_name
  35. DROP TABLE #rslt
  36. close s
  37. deallocate s
Advertisement
Add Comment
Please, Sign In to add comment