Czy istnieje sposób wyszukiwania ciągu we wszystkich tabelach bazy danych w SQL Server Management Studio 2008?
Chcę wyszukać ciąg powiedz john
. Wynik powinien zawierać tabele i odpowiadające im wiersze, które zawierają john
.
sql
sql-server
search
Ramiz Raja
źródło
źródło
Odpowiedzi:
Jeśli jesteś podobny do mnie i masz pewne ograniczenia w środowisku produkcyjnym, możesz użyć zmiennej tabeli zamiast tabeli tymczasowej i zapytania ad-hoc zamiast procedury tworzenia.
Oczywiście, w zależności od instancji serwera SQL, musi obsługiwać zmienne tabelowe.
Dodałem także instrukcję USE w celu zawężenia zakresu wyszukiwania
źródło
Trochę późno, ale mam nadzieję, że przydatne.
Wypróbuj niektóre narzędzia innych firm, które można zintegrować z SSMS.
Pracowałem z ApexSQL Search (100% za darmo) z dużym sukcesem zarówno w wyszukiwaniu schematów, jak i danych, a także pakiet narzędzi SSMS, który ma tę funkcję (nie jest darmowy dla SQL 2012, ale dość przystępny).
Zapisana procedura powyżej jest naprawdę świetna; po prostu moim zdaniem jest to o wiele wygodniejsze. Wymagałoby to również drobnych modyfikacji, jeśli chcesz wyszukać kolumny datetime lub kolumny GUID i takie…
źródło
Aby zaktualizować odpowiedź TechDo dla SQL Server 2012. Musisz zmienić:
'FROM ' + @TableName + ' (NOLOCK) '
naFROM ' + @TableName + 'WITH (NOLOCK) ' +
W przeciwnym razie pojawi się następujący błąd:
Deprecated feature 'Table hint without WITH' is not supported in this version of SQL Server.
Poniżej znajduje się pełna zaktualizowana procedura przechowywana:
źródło
Trochę późno, ale możesz łatwo znaleźć ciąg za pomocą tego zapytania
źródło
Napisałem SP dla tego, który zwraca wyniki wyszukiwania w postaci nazwy tabeli, nazw kolumn, w których znaleziono słowo kluczowe wyszukiwania, a także wyszukuje odpowiednie wiersze, jak pokazano na poniższym zrzucie ekranu.
To może nie być najskuteczniejsze rozwiązanie, ale zawsze możesz je modyfikować i używać w zależności od potrzeb.
źródło
Nie ma potrzeby zagnieżdżania (zapętlanie zewnętrzne przez tabele i zapętlenie wewnętrzne przez wszystkie kolumny tabeli). Można pobrać wszystkie (lub dowolnie wybrane / przefiltrowane) kombinacje kolumn z tabeli
INFORMATION_SCHEMA.COLUMNS
iw jednej pętli, po prostu przejść (przeszukać) wszystkie:źródło
curTabCol
wybiera wszystkie interesujące kombinacje tabeli. Kolumny. Następnie przeszukuje wszystkie te kolumny w poszukiwaniu ciągu podanego w zmiennej @search. Jeśli taki ciąg (dokładny) w tym zapytaniu SQL (w przeciwnym razie użyj LIKE '% ...%'), drukowana jest kombinacja nazw tabel i kolumn.To było bardzo pomocne. Chciałem zaimportować tę funkcję do bazy danych Postgre SQL. Myślałem, że podzielę się nim z każdym, kto jest zainteresowany. Będę miał kilka godzin. Uwaga: ta funkcja tworzy listę instrukcji SQL, które można skopiować i wykonać w bazie danych Postgre. Może ktoś mądrzejszy ode mnie może skłonić Postgre do tworzenia i wykonywania instrukcji w jednej funkcji.
źródło
Odpowiedź, która została wymieniona w tym poście już kilka razy, trochę zaadaptowałem, ponieważ musiałem również przeszukać tylko jedną tabelę:
(a także wprowadził nieco prostsze dane wejściowe dla nazwy tabeli)
źródło