У меня есть приложение, которое запрашивает и обновляет две базы данных одновременно (отличающиеся друг от друга), и оно уже работает от 10 до 15 лет. Поэтому я хотел бы начать убирать мусор из них.
Одна из вещей, которую я хочу сделать, - удалить все хранимые процедуры в базе данных B, которые по ошибке были созданы там (потому что они должны были войти в базу данных A).
Если я делаю один за другим, это легко, потому что я могу сказать, использует ли sp таблицу, которой нет в этой базе данных. Но держу пари, что их много, поэтому я хочу получить запрос, подтверждающий это.
Это ссылка от Microsoft, которая объясняет это: http://msdn.microsoft.com/en-us/library/ms190686.aspx. Но это не дает мне никакого решения! : S
Я попробовал следующий метод:
http://beyondrelational.com/blogs/jacob/archive/2009/01/28/tsql-how-to-revalidate-refresh-recompile-all-stored-procedures-in-a-database.aspx
Но это работало для некоторых, но не для всех.
Так вы, ребята, знаете какой-нибудь эффективный метод, который будет работать 100% времени?
Пробные:
- Перекомпиляция> НЕ
- sp_refreshsqlmodule> работает для большинства, но не для всех
- sp_depends> это может работать, так как все SP должны иметь зависимость от таблицы (по крайней мере, большинство из них). ОБНОВЛЕНИЕ: это тоже не работает. Если у меня есть sp, который ищет таблицы в обеих базах данных, он разрешит те, которые могут, но не все. Поэтому я не могу полагаться на «если нет зависимостей, кандидат на удаление».
Заранее спасибо