Я изменил центральную таблицу в моей базе данных, и sp_depends буквально возвращает сотни результатов, и я обеспокоен тем, что некоторые из этих хранимых процедур могут не скомпилироваться после моего изменения.
Проверить одну хранимую процедуру легко (я просто повторно запускаю скрипт alter и вижу, успешна ли операция), но делать это на более чем 100 процедурах немного громоздко.
Я знаю, что могу использовать такой скрипт, как этот, чтобы перекомпилировать все объекты моей базы данных, но фактическая операция будет иметь место при следующем выполнении хранимой процедуры, а не сразу, так что в моем случае это не подходит.
Я также думал о том, что мог бы полностью отбросить все хранимые процедуры и повторно синхронизировать свою базу данных с моей системой контроля версий, но этот вариант, хотя и жизнеспособный, не очень элегантен. Есть ли лучший способ сделать это?
Я использую SQLServer 2008 R2, и мои сценарии базы данных хранятся в проекте базы данных VS 2008.
Чтобы уточнить, я не защищаю, следует полагаться исключительно на этот подход для тестирования кода. Точно так же, как в c #, вы мгновенно обнаруживаете синтаксическую ошибку в других зависимых файлах при кодировании (а затем используете другие стратегии для тестирования, такие как модульные тесты, которые обычно на несколько порядков медленнее), я думаю, что имеет смысл обнаруживать зависимости SQL ошибки в секундах, а не запуск полного функционального теста, который обычно может занять несколько часов.
Это обходной путь, но вы можете сгенерировать сценарии CREATE PROCEDURE для базы данных (щелкните правой кнопкой мыши базу данных -> задачи -> создать сценарии), найти и заменить CREATE PROCEDURE на ALTER PROCEDURE, а затем проанализировать.
Я надеюсь, что вы получите лучший ответ здесь - мне тоже интересно! :)
источник
Вы можете использовать Sql Server Data Tools (SSDT). Microsoft Visual Studio позволяет создавать проект Sql Server. Затем импортируют базу данных в проект и затем строят проект. Если есть какие-либо поврежденные хранимые процедуры или объекты, вы получите ошибку компиляции.
источник
Возможно, вы захотите взглянуть на этот SO вопрос, который я ищу, чтобы найти надежный способ проверки хранимых процедур T-SQL. Кто-нибудь есть? который спрашивает по существу то же самое, с несколькими ответами.
Чтобы построить сценарий, опубликованный Alaa Awad ... здесь должны быть показаны схема и база данных объектов, на которые имеются ссылки. Если вы используете много временных таблиц через псевдонимы (которые иногда отображаются при использовании
sys.sql_expression_dependencies
), параметры UDTT или другие динамические функции, вам может понадобиться использовать функцииsys.dm_sql_referenced_entities
илиsys.dm_sql_referencing_entities
вместо них / также.источник
используйте sys.sql_expression_dependencies, добавленные в sql server 2008
источник