Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выявление "мёртвых" view/proc  [new]
Devil_FoX
Member

Откуда: Киев
Сообщений: 39
Всем привет.

На сервере работают несколько десятков людей. Постоянно приходят/уходят люди. Каждый создаёт свои таблицы/запросы (view)/процедуры и после ухода не всегда другие пользуются этими наработками, а создают свои.
Например за пять лет уже набралось несколько тысяч запросов (view/proc) и навигация по этим спискам затруднительна.

Встал вопрос по выявлению "мёртвых" (не используемых) запросов и процедур.
Как выявить мёртвые таблицы я уже нашёл с помощью статистики sys.dm_db_index_usage_stats, а есть ли подобная служба и для view/proc - где будет указано последнюю дату запуска view/proc ?

На просторах интернета предложили sys.dm_exec_procedure_stats, но он не показывает все процедуры. (в моём случае 95% процедур, которые явно работали недавно не показал)
23 окт 15, 09:30    [18315144]     Ответить | Цитировать Сообщить модератору
 Re: Выявление "мёртвых" view/proc  [new]
Glory
Member

Откуда:
Сообщений: 104751
Devil_FoX
На просторах интернета предложили sys.dm_exec_procedure_stats, но он не показывает все процедуры. (в моём случае 95% процедур, которые явно работали недавно не показал)


Returns aggregate performance statistics for cached stored procedures. The view returns one row for each cached stored procedure plan, and the lifetime of the row is as long as the stored procedure remains cached. When a stored procedure is removed from the cache, the corresponding row is eliminated from this view.
23 окт 15, 09:33    [18315162]     Ответить | Цитировать Сообщить модератору
 Re: Выявление "мёртвых" view/proc  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Google возвращает массу ссылок. Хотя бы вот эта.
https://sqlserverperformance.wordpress.com/2009/07/08/looking-for-unused-stored-procedures-in-sql-server-2008/
23 окт 15, 10:07    [18315327]     Ответить | Цитировать Сообщить модератору
 Re: Выявление "мёртвых" view/proc  [new]
Devil_FoX
Member

Откуда: Киев
Сообщений: 39
To Jovanny. По ссылке код показывает дату создания и дату модификации самой процедуры. Это хорошо, но мне нужна дата последней отработки этой процедуры, не всегда же модифицируешь код процедур, иногда бывает по несколько лет работает процедура без модификаций.
23 окт 15, 10:17    [18315394]     Ответить | Цитировать Сообщить модератору
 Re: Выявление "мёртвых" view/proc  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Devil_FoX
To Jovanny. По ссылке код показывает дату создания и дату модификации самой процедуры. Это хорошо, но мне нужна дата последней отработки этой процедуры, не всегда же модифицируешь код процедур, иногда бывает по несколько лет работает процедура без модификаций.

Суть не в этом. Запрос возвращает процедуры, отсутствующие в процедурном кеше.
Тут изначально не будет процедур WITH RECOMPILE or OPTION(RECOMPILE) и кроме того, если кеш часто обновляется, то тоже можно упустить какие-нибудь процедуры. Поэтому для более точных результатов лучше собрать данные из этого запроса за какой-то период.
23 окт 15, 10:27    [18315446]     Ответить | Цитировать Сообщить модератору
 Re: Выявление "мёртвых" view/proc  [new]
Glory
Member

Откуда:
Сообщений: 104751
Devil_FoX
To Jovanny. По ссылке код показывает дату создания и дату модификации самой процедуры. Это хорошо, но мне нужна дата последней отработки этой процедуры, не всегда же модифицируешь код процедур, иногда бывает по несколько лет работает процедура без модификаций.

Если вы хотите получить отакой список немедленно, то его нет.
Если вы хотите собрать статистику, то создавайте трассировку или AUDIT или Extended Events в зависимости от версии вашего сервера
23 окт 15, 10:29    [18315463]     Ответить | Цитировать Сообщить модератору
 Re: Выявление "мёртвых" view/proc  [new]
вопрос по выявлению
Guest
Devil_FoX,

поиск по исходникам sql в sys.sql_modules
поиск по исходникам клиента

подозреваемые в мертвости можно в другую схему подвигать или внутрь ошибку/какую-то метку заложить, чтоб сломалось/отметилось где-то если вдруг используется

и заводить уже что-то похожее на процесс разработки. "несколько десятков людей" которые лупят по живому боевому - это, конечно, весело, но абсолютно не дело.
заводите разработческий полигон, там пусть колбасят. периодически переподнимайте и шлак сам потеряется.
23 окт 15, 10:43    [18315555]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить