Я хочу найти текст во всех хранимых процедурах моей базы данных. Я использую ниже 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]%';
Я хочу искать [ABD]
во всех хранимых процедурах, включая квадратные скобки, но это не дает должного результата. Как я могу изменить свой запрос для достижения этого?
sql
sql-server
stored-procedures
DharaPPatel
источник
источник
SCHEMA_NAME(o.schema_id) AS Schema_Name
к предложению select.Попробуйте этот запрос:
запрос
источник
Вы пытались использовать некоторые сторонние инструменты для поиска? Есть несколько доступных там, которые бесплатны и которые сэкономили мне массу времени в прошлом.
Ниже приведены два дополнения SSMS, которые я использовал с хорошим успехом.
ApexSQL Search - выполняет поиск по схеме и данным в базах данных и имеет дополнительные функции, такие как отслеживание зависимостей и многое другое…
Пакет инструментов SSMS - имеет те же функции поиска, что и предыдущий, и несколько других интересных функций. Не бесплатно для SQL Server 2012, но все еще очень доступно.
Я знаю, что этот ответ не на 100% связан с вопросами (который был более конкретным), но, надеюсь, другие найдут это полезным.
источник
Я обычно запускаю следующее для достижения этой цели:
источник
Хорошая практика для работы с SQL Server.
Создайте ниже хранимую процедуру и установите короткий ключ,
Сейчас - установите короткий ключ, как показано ниже,
Поэтому в следующий раз , когда вы хотите найти конкретный текст в любом из четырех объектов , таких как
Store procedure
,Views
,Functions
иTables
. Вам просто нужно написать это ключевое слово и нажать клавишу быстрого доступа.Например: я хочу найти «PaymentTable», затем написать «PaymentTable» и убедиться, что вы выбрали или выделите написанное ключевое слово в редакторе запросов и нажали комбинацию клавиш
ctrl+4
- это даст вам полный результат.источник
Procedure or function 'Searchinall' expects parameter '@strFind', which was not supplied
Любые идеи?SQL Search от Redgate - отличный инструмент для этого, это бесплатный плагин для SSMS.
источник
Пожалуйста, примите это как «грязную» альтернативу, но это спасло меня много раз, особенно когда я не был знаком с проектом БД. Иногда вы пытаетесь найти строку во всех SP и забываете, что некоторая связанная логика могла скрываться между функциями и триггерами, или она может быть просто сформулирована иначе, чем вы думали.
В вашей MSSMS вы можете щелкнуть правой кнопкой мыши по вашей БД и выбрать
Tasks -> Generate Scripts
мастер, чтобы вывести все SP, Fns и Trigger в один файл .sql.Обязательно выберите Триггеры тоже!
Затем просто используйте Sublime или Notepad для поиска нужной вам строки. Я знаю, что это может быть довольно неэффективным и параноидальным подходом, но это работает :)
источник
Вы также можете использовать это:
источник
INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION
только первые 4000 символов рутины.Это может помочь вам!
источник
источник
источник
Также вы можете использовать:
Это включает в себя комментарии
источник
OBJECT_NAME ([id]) -> Имя объекта (Просмотр, Процедура сохранения, Скалярная функция, Имя табличной функции)
id (int) = Идентификационный номер объекта
xtype char (2) Тип объекта. Может быть одним из следующих типов объектов:
FN = скалярная функция
P = хранимая процедура
V = Просмотр
TF = табличная функция
источник
Я создал процедуру для поиска текста в процедурах / функциях, таблицах, представлениях или заданиях. Первый параметр @search - это критерий поиска, @target цель поиска, т. Е. Процедуры, таблицы и т. Д. Если не указано, искать все. @db - указать базу данных для поиска, по умолчанию текущую базу данных. Вот мой запрос в динамическом SQL.
источник
Используя CHARINDEX :
Использование PATINDEX :
Использование этого двойника
[[]ABD]
похоже на экранирование:источник
также попробуйте это:
источник
источник
Этот запрос является поиском текста в хранимой процедуре из всех баз данных.
источник
источник
Время от времени я использую этот сценарий, чтобы выяснить, какие процедуры нужно изменить, или выяснить, что вообще использует столбец таблицы или эту таблицу, чтобы удалить какой-то старый мусор. Он проверяет каждую базу данных в экземпляре, на котором она запущена чудесным образом предоставленным sp_msforeachdb.
источник
источник
Вы также можете использовать
а потом беги
источник