Как получить хранимые процедуры SQL Server? - PullRequest
7 голосов
/ 14 сентября 2011

Я хотел бы запустить стандартный grep для всех хранимых процедур в данной базе данных SQL Server (предположим, 2005 или более поздняя версия). Я нашел множество простых запросов для перечисления имен хранимых процедур, содержащих конкретный объект, например,

SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%table_I_want_to_find%'

Но я действительно хочу, как и grep, перечислить конкретные строки в идентифицированных хранимых процедурах (поэтому мне не нужно вручную открывать каждую из них и проверять, что это я ищу).

Я открыт для решений на T-SQL или PowerShell или даже для готовой утилиты.

Ответы [ 3 ]

7 голосов
/ 14 сентября 2011

Использовать Поиск SQL от Red Gate .Это бесплатный инструмент и это фантастика.

3 голосов
/ 06 октября 2011

Я новичок в SQL Server, но следующее, кажется, прекрасно работает и уже доказало свою полезность. Я использую SQL Server 2008.

select ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, ROUTINE_BODY, ROUTINE_DEFINITION
from INFORMATION_SCHEMA.ROUTINES
where ROUTINE_DEFINITION like '%searchtext%'
order by ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, ROUTINE_DEFINITION;

Для полноты вот несколько похожих запросов, о которых вы, вероятно, захотите узнать:

exec sp_help 'myTable'

select name
from sys.all_views
order by name;

select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
from INFORMATION_SCHEMA.TABLES
order by TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE;

select TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME = 'myColumn'
order by TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME;
0 голосов
/ 14 сентября 2011

Вы можете использовать SMO для выгрузки DDL хранимой процедуры в файлы, а затем использовать для них grep.

Есть несколько примеров извлечения DDL здесь (называется сценариями).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...