Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как найти определенный текст в объектах БД (например, ХП)  [new]
posdnyaa
Member

Откуда:
Сообщений: 45
Здравствуйте.
Имеется такая проблемка. Допустим, в нескольких из множества хранимых процедур я использовал курсор. И хочу найти эти процедуры. Помню, что можно вызвать системную хранимую процедуру, которая вернет мне названия искомых ХП, но какую – вообще не вспомнить.
Подскажите, пожалуйста, как это сделать?
10 фев 10, 23:43    [8326277]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
iljy
Member

Откуда:
Сообщений: 8711
posdnyaa,

INFORMATION_SCHEMA.ROUTINES
OBJECT_DEFINITION
OBJECT_ID
вас спасут
10 фев 10, 23:50    [8326299]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
posdnyaa
Member

Откуда:
Сообщений: 45
iljy,

спасибо, но немного непонятно.

Я имел ввиду что-то типа
Select objName From sys.___ WHERE text like %DECLARE CURSOR% 
11 фев 10, 00:22    [8326370]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
iljy
Member

Откуда:
Сообщений: 8711
posdnyaa,

а что именно непонятно? Вы в документации посмотрели по этим ключевым словам?
11 фев 10, 00:35    [8326389]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
sys.sql_modules
11 фев 10, 06:14    [8326516]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
aleks2
Guest
DeColo®es
sys.sql_modules

Зачем? Если есть INFORMATION_SCHEMA.

Вот на оракл будете переносить - замаетесь. Хе-хе.
11 фев 10, 06:30    [8326528]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
aleks2
DeColo®es
sys.sql_modules

Зачем? Если есть INFORMATION_SCHEMA.

Вот на оракл будете переносить - замаетесь. Хе-хе.
1. Медленно - жуткие планы выполнение, да и небезглючные эти представления.

2. Сдается мне, после переноса на Oracle нужно будет выискивать не использование в курсора в процедурах, а скорее наоборот. ;)

3. В INFORMATION_SCHEMA нет возможности получить полный текст процедуры - только первые 4000 символов.
11 фев 10, 15:25    [8330420]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
s_Alexem
Member

Откуда: Зеленоград
Сообщений: 86
posdnyaa, добрый день!

Есть у меня ХП для поиска связей:

CREATE PROCEDURE sp_SRV_GetDependencies (@ObjName varchar(200))
AS

select 
	[NAME],
	[Object_id],
	[type_desc],
	[modify_date]
from sys.objects 
where (parent_object_id in (select Object_id from sys.objects where name = @ObjName)
or object_id in (select object_id from sys.all_sql_modules 
where PATINDEX('%' + @ObjName + ' %', [definition]) > 0))
AND [type] IN ('P','V')
order by type_desc, name

Вызываю ее вот так:

EXECUTE sp_SRV_GetDependencies 'DECLARE%CURSOR'
и получаю список ХП с курсорами
15 июл 11, 12:07    [10978814]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
SELECT [type], [name]
FROM sys.objects
WHERE OBJECT_DEFINITION([object_id]) LIKE '%DECLARE CURSOR%' COLLATE Cyrillic_General_CI_AI;
15 июл 11, 12:29    [10979025]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
boltnik
Member

Откуда: Калуга/Москва
Сообщений: 144
SQL Search от RedGate (он бесплатный)
15 июл 11, 12:29    [10979028]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
iap
SELECT [type], [name]
FROM sys.objects
WHERE OBJECT_DEFINITION([object_id]) LIKE '%DECLARE CURSOR%' COLLATE Cyrillic_General_CI_AI;
Точнее так:
SELECT [type], [name]
FROM sys.objects
WHERE OBJECT_DEFINITION([object_id]) LIKE N'%DECLARE CURSOR%' COLLATE Cyrillic_General_CI_AI;
15 июл 11, 12:30    [10979040]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
s_Alexem
Member

Откуда: Зеленоград
Сообщений: 86
iap,

А вы проверяли написанное Вами?
Возвращает 0 записей
А вот если написать
LIKE '%DECLARE%CURSOR%'
то получается как надо.
А процедура, приведенная мной просто еще более расширена для поиска не просто по вхождению а и по связям объектов ))))
15 июл 11, 14:18    [10980018]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
s_Alexem
iap,

А вы проверяли написанное Вами?
Возвращает 0 записей
А вот если написать
LIKE '%DECLARE%CURSOR%'
то получается как надо.
А процедура, приведенная мной просто еще более расширена для поиска не просто по вхождению а и по связям объектов ))))
Проверял. Но я всегда пишу по одному пробелу между ключевыми словами.

На самом деле достаточно искать слово CURSOR
Типа
WHERE N' '+OBJECT_DEFINITION([object_id])+N' ' LIKE '% CURSOR %' COLLATE Cyrillic_General_CI_AI;
Ну и вообще, я же для программистов написал.
Они должны не копировать буквально, а подходить творчески.
Нужна идея. Детали вторичны.
15 июл 11, 14:31    [10980129]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
s_Alexem
а и по связям объектов ))))

а нафег изобретать велик?!


есть же
sys.sql_expression_dependencies
15 июл 11, 14:32    [10980142]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определенный текст в объектах БД (например, ХП)  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
а я вот умею находить в сорцах любой необходимый стейтмент :)
15 июл 11, 15:49    [10980845]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить