Chcę wyszukać tekst ze wszystkich procedur przechowywanych w bazie danych. Używam poniższego kodu SQL:
SELECT DISTINCT
o.name AS Object_Name,
o.type_desc
FROM sys.sql_modules m
INNER JOIN
sys.objects o
ON m.object_id = o.object_id
WHERE m.definition Like '%[ABD]%';
Chcę wyszukiwać [ABD]
we wszystkich procedurach przechowywanych, w tym w nawiasach kwadratowych, ale nie daje to właściwego wyniku. Jak mogę zmienić moje zapytanie, aby to osiągnąć?
sql
sql-server
stored-procedures
DharaPPatel
źródło
źródło
SCHEMA_NAME(o.schema_id) AS Schema_Name
do klauzuli select.Spróbuj tego żądania:
Pytanie
źródło
Czy próbowałeś użyć narzędzi innych firm do wyszukiwania? Istnieje kilka dostępnych na rynku, które są bezpłatne i pozwoliły mi zaoszczędzić mnóstwo czasu w przeszłości.
Poniżej znajdują się dwa dodatki SSMS, z których korzystałem.
Wyszukiwanie ApexSQL - przeszukuje zarówno schemat, jak i dane w bazach danych oraz ma dodatkowe funkcje, takie jak śledzenie zależności i więcej…
Pakiet narzędzi SSMS - ma taką samą funkcjonalność wyszukiwania jak poprzednia i kilka innych ciekawych funkcji. Nie jest darmowy dla SQL Server 2012, ale wciąż bardzo przystępny.
Wiem, że ta odpowiedź nie jest w 100% związana z pytaniami (która była bardziej szczegółowa), ale mam nadzieję, że inni uznają ją za przydatną.
źródło
Zazwyczaj wykonuję następujące czynności, aby to osiągnąć:
źródło
Dobra praktyka do pracy z SQL Server.
Utwórz poniżej procedury składowanej i ustaw krótki klawisz,
Teraz - Ustaw krótki klawisz jak poniżej,
Więc następnym razem, gdy chcesz znaleźć konkretny tekst w dowolnym z czterech obiektów, takich jak
Store procedure
,Views
,Functions
iTables
. Wystarczy wpisać to słowo kluczowe i nacisnąć klawisz skrótu.Na przykład: chcę wyszukać „PaymentTable”, a następnie napisać „PaymentTable” i upewnić się, że wybrałeś lub podświetliłeś zapisane słowo kluczowe w edytorze zapytań i nacisnąłem klawisz skrótu
ctrl+4
- zapewni to pełny wynik.źródło
Procedure or function 'Searchinall' expects parameter '@strFind', which was not supplied
Jakieś pomysły?Wyszukiwanie SQL Redgate jest świetnym narzędziem do tego, jest darmową wtyczką do SSMS.
źródło
Proszę to potraktować jako „brudną” alternatywę, ale to uratowało mnie wiele razy, szczególnie gdy nie znałem projektu DB. Czasami próbujesz wyszukać ciąg znaków we wszystkich SP i zapominasz, że niektóre powiązane logiki mogły ukrywać się między funkcjami a wyzwalaczami lub mogą być po prostu inaczej sformułowane, niż ci się wydawało.
W MSSMS możesz kliknąć prawym przyciskiem myszy DB i wybrać
Tasks -> Generate Scripts
kreatora, aby wyprowadzić wszystkie SP, Fns i Triggery do jednego pliku .sql.Pamiętaj, aby wybrać również wyzwalacze!
Następnie po prostu użyj Sublime lub Notatnika, aby wyszukać ciąg, który chcesz znaleźć. Wiem, że to może być dość nieefektywne i paranoiczne podejście, ale działa :)
źródło
Możesz także użyć tego:
źródło
INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION
tylko pierwsze 4000 znaków procedury.To może ci pomóc!
źródło
źródło
źródło
Możesz także użyć:
Obejmuje to komentarze
źródło
OBJECT_NAME ([id]) -> Nazwa obiektu (widok, procedura przechowywania, funkcja skalarna, nazwa funkcji tabelowej)
id (int) = numer identyfikacyjny obiektu
xtype char (2) Typ obiektu. Może być jednym z następujących typów obiektów:
FN = funkcja skalarna
P = procedura składowana
V = widok
TF = funkcja tabeli
źródło
Stworzyłem procedurę wyszukiwania tekstu w procedurach / funkcjach, tabelach, widokach lub zadaniach. Pierwszy parametr @ szukaj to kryterium wyszukiwania, @ cel docelowy wyszukiwania, tzn. Procedury, tabele itp. Jeśli nie określono, wyszukaj wszystko. @db określa bazę danych do przeszukania, domyślnie w bieżącej bazie danych. Oto moje zapytanie w dynamicznym SQL.
źródło
Za pomocą CHARINDEX :
Za pomocą PATINDEX :
Korzystanie z tego podwójnego
[[]ABD]
jest podobne do ucieczki:źródło
spróbuj także:
źródło
źródło
To zapytanie wyszukuje tekst w procedurze przechowywanej ze wszystkich baz danych.
źródło
źródło
Od czasu do czasu używam tego skryptu, aby dowiedzieć się, które procesy zmodyfikować, lub dowiedzieć się, co wykorzystuje kolumnę tabeli lub tę tabelę, aby usunąć stare śmieci. Sprawdza każdą bazę danych w instancji, w której jest uruchamiany przez wspaniale dostarczony sp_msforeachdb.
źródło
źródło
Możesz także użyć
a następnie biegnij
źródło