Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
alm2
Member

Откуда: Самара
Сообщений: 232
Как найти в каких хранимых процедурах или функциях встречается нужная строка ?

Чтобы не открывать каждую отдельно.
9 фев 18, 08:28    [21178752]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Добрый Э - Эх
Guest
alm2,

для затравки:
SELECT [name]
  FROM [sys].[objects]
 WHERE [type]='P' 
   AND OBJECT_DEFINITION([object_id]) LIKE N'%НУЖНАЯ СТРОКА%';

а там - видно будет :)
9 фев 18, 08:35    [21178770]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
a1ex
Member

Откуда: .ua
Сообщений: 369
select * from syscomments where text like '%something%'
9 фев 18, 11:04    [21179110]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
alm2
Member

Откуда: Самара
Сообщений: 232
Это не то !
Мне нужен не список процедур по заданному шаблону, а список процедур, внутри которых в тексте есть нужная мне строка !
9 фев 18, 11:48    [21179282]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
alm2
Это не то !
Мне нужен не список процедур по заданному шаблону, а список процедур, внутри которых в тексте есть нужная мне строка !
Вам же написали! OBJECT_DEFINITION()!
9 фев 18, 11:54    [21179320]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
ага
Guest
alm2
Это не то !
Мне нужен не список процедур по заданному шаблону, а список процедур, внутри которых в тексте есть нужная мне строка !


в первом же ответе уже написано. вы хоть скрипт-то запустили?
9 фев 18, 11:55    [21179326]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
a1ex
select * from syscomments where text like '%something%'
Это плохая идея. Там строки процедуры, порезанные на куски.по 4000 символов.
Искомая строка может храниться частями на соседних строках.
9 фев 18, 11:57    [21179337]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
ага
Guest
Добрый Э - Эх
alm2,

для затравки:
SELECT [name]
  FROM [sys].[objects]
 WHERE [type]='P' 
   AND OBJECT_DEFINITION([object_id]) LIKE N'%НУЖНАЯ СТРОКА%';

а там - видно будет :)


а для функций добавь еще 'FN', 'IF', 'TF'
9 фев 18, 11:59    [21179358]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
a1ex
Member

Откуда: .ua
Сообщений: 369
просто направление для поиска, не более. хорошая или плохая это идея может определить только тот, кто построит окончательный запрос
9 фев 18, 12:02    [21179387]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
ага
Добрый Э - Эх
alm2,

для затравки:
SELECT [name]
  FROM [sys].[objects]
 WHERE [type]='P' 
   AND OBJECT_DEFINITION([object_id]) LIKE N'%НУЖНАЯ СТРОКА%';


а там - видно будет :)


а для функций добавь еще 'FN', 'IF', 'TF'
Тогда и триггеры - 'TR'
9 фев 18, 12:12    [21179455]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
ага
Guest
iap
ага
пропущено...


а для функций добавь еще 'FN', 'IF', 'TF'
Тогда и триггеры - 'TR'


ну про триггеры ТС не спрашивал :)
9 фев 18, 12:16    [21179473]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Гость, проходящий мимо
Guest
alm2,

select BODY.ID, BODY.[TEXT], OBJ.NAME
from syscomments BODY
INNER JOIN sys.objects OBJ ON BODY.ID = OBJ.object_id
where
BODY.[TEXT] like '%то что нужно найти в теле объекта%'
9 фев 18, 16:32    [21180713]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Barclay
Member

Откуда:
Сообщений: 127
alm2,
Если все рекомендуемые советы вас не устроили,
Зайдите в раздел с процедурами, нажмите F7, выделите все процедуры CTRL+A, правой мышкой Script Stored Procedure as -> Create to....
Через минуту в отдельном окне вам будет выдан скрипт всех процедур, где с помощью Ctrl+F вы найдете нужный вам текст.
Вот так через одно место, можно получить желаемое:)
9 фев 18, 23:34    [21181428]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3459
Barclay
alm2,
Если все рекомендуемые советы вас не устроили,
Зайдите в раздел с процедурами, нажмите F7, выделите все процедуры CTRL+A, правой мышкой Script Stored Procedure as -> Create to....
Через минуту в отдельном окне вам будет выдан скрипт всех процедур, где с помощью Ctrl+F вы найдете нужный вам текст.
Вот так через одно место, можно получить желаемое:)


Если все рекомендуемые советы вас не устроили, ставим бесплатный тул и пользуемся, например:
https://www.red-gate.com/products/sql-development/sql-search/index
11 фев 18, 13:25    [21183193]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Sintetik
Member

Откуда: SpB->Msk->...
Сообщений: 9292
подниму темку, а если не на все процедуры у меня есть права, скрипт тоже в них будет искать строку и выдаст имя?
19 дек 18, 12:04    [21768175]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Щукина Анна
Member

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

Вас в гугле забанили или пользоваться поиском религия не позволяет?

https://docs.microsoft.com/ru-ru/sql/t-sql/functions/object-definition-transact-sql?view=sql-server-2017
Разрешения

Определения системных объектов видимы для всех.

Определения пользовательских объектов видимы владельцу объекта или участникам,
которым предоставлены следующие разрешения: ALTER, CONTROL, TAKE OWNERSHIP или VIEW DEFINITION.
Эти разрешения неявно предоставляются членам предопределенных ролей базы данных db_owner, db_ddladmin и db_securityadmin
.
19 дек 18, 12:26    [21768226]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Sintetik
Member

Откуда: SpB->Msk->...
Сообщений: 9292
Щукина Анна
Определения системных объектов видимы для всех.

я не про объекты системного словаря спрашивал, логично что если к ним нет прав то и селект не сработает

я спрашивал если у меня нет прав на пользовательскую процедуру ХХХ и я ее даже не вижу в списках объектов, но есть права запроса к словарю, будет ли доступен поиск по тексту процедуры ХХХ?
19 дек 18, 12:53    [21768253]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Щукина Анна
Sintetik,

Вас в гугле забанили или пользоваться поиском религия не позволяет?

https://docs.microsoft.com/ru-ru/sql/t-sql/functions/object-definition-transact-sql?view=sql-server-2017
Разрешения

Определения системных объектов видимы для всех.

Определения пользовательских объектов видимы владельцу объекта или участникам,
которым предоставлены следующие разрешения: ALTER, CONTROL, TAKE OWNERSHIP или VIEW DEFINITION.
Эти разрешения неявно предоставляются членам предопределенных ролей базы данных db_owner, db_ddladmin и db_securityadmin
.


ну и при чем тут все перечисленное?
вам показалось, что ТС "член предопределенных ролей базы данных db_owner, db_ddladmin и db_securityadmin"
или что у него есть ALTER, CONTROL, TAKE OWNERSHIP или VIEW DEFINITION?

он ясно написал, что у него есть лишь разрешения на некоторые процедуры.
так вот на какие процедуры имеется EXECUTE, ровно те процедуры товарищ и "увидит" в sys.sql_modules
19 дек 18, 12:54    [21768258]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Sintetik
я спрашивал если у меня нет прав на пользовательскую процедуру ХХХ и я ее даже не вижу в списках объектов, но есть права запроса к словарю, будет ли доступен поиск по тексту процедуры ХХХ?

вы правильно все поняли,
у вас не будет доступа к тексту процедур, на которые у вас нет прав.
будет лишь доступк тексту процедур, которые вы "видите" в Object Explorer
19 дек 18, 12:57    [21768262]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Sintetik
Member

Откуда: SpB->Msk->...
Сообщений: 9292
Yasha123
Sintetik
я спрашивал если у меня нет прав на пользовательскую процедуру ХХХ и я ее даже не вижу в списках объектов, но есть права запроса к словарю, будет ли доступен поиск по тексту процедуры ХХХ?

вы правильно все поняли,
у вас не будет доступа к тексту процедур, на которые у вас нет прав.
будет лишь доступк тексту процедур, которые вы "видите" в Object Explorer

спасибо, просто я не владелец и не админ базы
т.е. если я попрошу запустить запрос из под роли "db_owner, db_ddladmin и db_securityadmin", то будет поиск по всем пользовательским процедурам во всех схемах, что есть в базе?
19 дек 18, 13:09    [21768278]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Sintetik
т.е. если я попрошу запустить запрос из под роли "db_owner, db_ddladmin и db_securityadmin", то будет поиск по всем пользовательским процедурам во всех схемах, что есть в базе?

да.
причем достаточно иметь просто VIEW DEFINITION.
членство в ролях необязательно.

как вариант, пусть человек с правами напишет вам процедуру поиска с параметром.
и в процедуре укажет EXECUTE AS OWNER.
теперь достаточно выдать EXEC на это процедуру кому-то типа вас,
и будете искать по всем процедурам от имени того пользователя
19 дек 18, 13:18    [21768290]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
Yasha123
ну и при чем тут все перечисленное?
вам показалось, что ТС "член предопределенных ролей базы данных db_owner, db_ddladmin и db_securityadmin"
или что у него есть ALTER, CONTROL, TAKE OWNERSHIP или VIEW DEFINITION?

он ясно написал, что у него есть лишь разрешения на некоторые процедуры.
так вот на какие процедуры имеется EXECUTE, ровно те процедуры товарищ и "увидит" в sys.sql_modules
Во-первых, про EXECUTE - это вы сами придумали. Товарищ лишь сказал, что у него "права не на все процедуры". Какие именно права - не уточнялось. Поэтому, если кому и показалось, то, скорее всего, вам.
Во-вторых, все перечисленное ГАРАНТИРУЕТ доступ ко всем определениям процедур, чего и требуется по итогу автору вопроса, если , конечно, вы этого сами не поняли...
19 дек 18, 13:50    [21768323]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
Yasha123
да.
причем достаточно иметь просто VIEW DEFINITION.

Ну конечно. А в моем-то ответе как-то не так про тоже самое было написано...

Щукина Анна
Sintetik,

Вас в гугле забанили или пользоваться поиском религия не позволяет?

https://docs.microsoft.com/ru-ru/sql/t-sql/functions/object-definition-transact-sql?view=sql-server-2017
Разрешения

Определения системных объектов видимы для всех.

Определения пользовательских объектов видимы владельцу объекта или участникам,
которым предоставлены следующие разрешения: ALTER, CONTROL, TAKE OWNERSHIP или VIEW DEFINITION.
Эти разрешения неявно предоставляются членам предопределенных ролей базы данных db_owner, db_ddladmin и db_securityadmin .


Вы уж определитесь. Или "достаточно иметь просто VIEW DEFINITION", или "ну и при чем тут все перечисленное"

19 дек 18, 13:58    [21768331]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Щукина Анна
Во-первых, про EXECUTE - это вы сами придумали. Товарищ лишь сказал, что у него "права не на все процедуры". Какие именно права - не уточнялось.

нет, дорогая курильщица, EXECUTE это то, что у него есть.
или какие же еще права ему выдали на процедуры?
придумайте такой фантастический пример,
когда юзеру на некоторые процедуры выдано что-то иное.
и чтобы в этом был какой-то смысл

Щукина Анна
Во-вторых, все перечисленное ГАРАНТИРУЕТ доступ ко всем определениям процедур

вот именно.
а у него этого доступа КО ВСЕМ ПРОЦЕДУРАМ как раз и нет.
учимся читать написанное:
автор
не на все процедуры у меня есть права

ну и в-третьих, где же ответ на вопрос,
какие же именно тексты процедут ТС увидит?
мой ответ как раз на этот вопрос: на какие процедуры имеется EXECUTE,
те и увидит.
а ваше цитирование доказывает лишь то,
что вы не поняли: ничего из перечисленного у ТС нет.

но это не значит, что ТС ничего не найдет.
потому что вполне возможно, что искомое как раз в тех процедурах, на которые права есть.
и имеющегося EXECUTE как раз и хватит, чтобы найти искомое
19 дек 18, 14:04    [21768339]     Ответить | Цитировать Сообщить модератору
 Re: Как найти в каких хранимых процедурах или функциях встречается нужная строка  [new]
Щукина Анна
Member

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

Что же вы не предупредили-то, что страдаете семантической дислексией....
Попробую «перевести» диалог на понятный вам язык...

Автор поинтересовался: «у меня есть [какие-то] права на какие-то процедуры. Смогу ли я искать текст в ЛЮБЫХ процедурах»
На что ему мной был дан ответ цитатой из документации: «для поиска некоего текста в любых процедурах нужны любые права из списка»

Надеюсь, теперь вам будет понятнее. Если нет, то это уже не на техническом форуме обсуждать, а на приеме у логопеда в лучшем случае, и у психиатра в худшем.
19 дек 18, 14:51    [21768419]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить