Untitled
unknown
sql
a year ago
1.8 kB
10
Indexable
-- Deklaracja zmiennej dla dynamicznego zapytania SQL
DECLARE @sql NVARCHAR(MAX) = N'';
-- Deklaracja zmiennych dla nazw tabel i kolumn
DECLARE @table NVARCHAR(MAX);
DECLARE @column NVARCHAR(MAX);
-- Tworzymy kursor do iteracji przez wszystkie tekstowe kolumny w bazie danych
DECLARE column_cursor CURSOR FOR
SELECT
TABLE_NAME, -- Nazwa tabeli
COLUMN_NAME -- Nazwa kolumny
FROM
INFORMATION_SCHEMA.COLUMNS -- Widok systemowy zawierający metadane o kolumnach
WHERE
DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar', 'text', 'ntext'); -- Wybór tylko tekstowych typów danych
-- Otwieramy kursor
OPEN column_cursor;
-- Pobieramy pierwszy wiersz z kursora i zapisujemy wartości do zmiennych
FETCH NEXT FROM column_cursor INTO @table, @column;
-- Pętla przetwarzająca wszystkie wiersze kursora
WHILE @@FETCH_STATUS = 0 -- @@FETCH_STATUS sprawdza, czy FETCH zakończył się sukcesem
BEGIN
-- Dodajemy zapytanie SQL do zmiennej @sql dla bieżącej tabeli i kolumny
SET @sql +=
'SELECT ''' + @table + ''' AS TableName, ''' + @column + ''' AS ColumnName, ' +
@column + ' AS FoundValue ' + -- Wartość znaleziona w kolumnie
'FROM ' + @table + ' ' + -- Źródło danych (tabela)
'WHERE ' + @column + ' LIKE ''%admin%'' UNION ALL '; -- Warunek wyszukiwania (szukamy tekstu "admin")
-- Pobieramy kolejny wiersz z kursora
FETCH NEXT FROM column_cursor INTO @table, @column;
END
-- Zamykamy kursor po zakończeniu iteracji
CLOSE column_cursor;
-- Usuwamy kursor z pamięci
DEALLOCATE column_cursor;
-- Usuwamy ostatnie 'UNION ALL', które nie jest potrzebne na końcu zapytania
SET @sql = LEFT(@sql, LEN(@sql) - 10);
-- Wykonujemy dynamicznie zbudowane zapytanie
EXEC sp_executesql @sql;Editor is loading...
Leave a Comment