Список хранимой процедуры от таблицы

http://lists.osgeo.org/pipermail/grass-user/2006-January/031981.html

Существует также инструмент под названием Sqliteman , который предоставляет визуальный вариант для удаления столбцов.

Спасибо, Jignesh

8
задан Lukas Eder 27 December 2012 в 09:39
поделиться

7 ответов

select
  so.name,
  sc.text
from
  sysobjects so inner join syscomments sc on so.id = sc.id
where
  sc.text like '%INSERT INTO xyz%'
  or sc.text like '%UPDATE xyz%'

Это даст Вам список всего содержания хранимой процедуры со ВСТАВКОЙ или ОБНОВЛЕНИЕМ в них для конкретной таблицы (можно, очевидно, настроить запрос для удовлетворения). Также более длинные процедуры будут повреждены через несколько строк в возвращенном recordset, таким образом, Вы, возможно, должны будете сделать немного ручного отсеивания через результаты.

Править: Настроенный запрос для возврата имени SP также. Кроме того, обратите внимание, что вышеупомянутый запрос возвратит любой UDFs, а также SPS.

10
ответ дан 5 December 2019 в 05:46
поделиться

sys.sql_dependencies имеет список объектов с зависимостями, включая таблицы и столбцы, которые sproc включает в запросы. См. это сообщение для примера запроса, который вынимает зависимости. Фрагмент кода ниже получит список зависимостей от таблицы/столбец хранимой процедурой

select sp.name       as sproc_name
      ,t.name        as table_name
      ,c.name        as column_name
 from sys.sql_dependencies d
 join sys.objects t
   on t.object_id = d.referenced_major_id
 join sys.objects sp
   on sp.object_id = d.object_id
 join sys.columns c
   on c.object_id = t.object_id
  and c.column_id = d.referenced_minor_id
where sp.type = 'P'
14
ответ дан 5 December 2019 в 05:46
поделиться

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

Более усовершенствованная техника состояла бы в том, чтобы использовать поиск regexp, чтобы найти весь ВЫБОР ИЗ и ВСТАВИТЬ ОТ записей.

1
ответ дан 5 December 2019 в 05:46
поделиться

Используйте sys.dm_sql_referencing_entities

Обратите внимание, что sp_depends является obsoleted.

Ссылка MSDN

2
ответ дан 5 December 2019 в 05:46
поделиться

Это, кажется, работает:

select
so.name as [proc],
so2.name as [table],
sd.is_updated
from sysobjects so
inner join sys.sql_dependencies sd on so.id = sd.object_id
inner join sysobjects so2 on sd.referenced_major_id = so2.id
where so.xtype = 'p' -- procedure
and is_updated = 1 -- proc updates table, or at least, I think that's what this means

1
ответ дан 5 December 2019 в 05:46
поделиться

При загрузке sp_search_code с веб-сайта Vyaskn, он позволит Вам находить любой текст в своих объектах базы данных.

http://vyaskn.tripod.com/sql_server_search_stored_procedure_code.htm

1
ответ дан 5 December 2019 в 05:46
поделиться
SELECT Distinct SO.Name
FROM sysobjects SO (NOLOCK)
INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID
AND SO.Type = 'P'
AND (SC.Text LIKE '%UPDATE%' OR SC.Text LIKE '%INSERT%')
ORDER BY SO.Name

Эта ссылка использовалась в качестве ресурса для поиска SP.

0
ответ дан 5 December 2019 в 05:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: