Добрый день всем -
У меня есть временная хранимая процедура, которую нужно запускать как исправление в нескольких местах, и я хотел бы прервать создание и компиляцию SP, если версия приложения не соответствует той, которую я ввожу. У меня есть основная идея, но я хотел бы, чтобы сообщения появлялись без проблем со схемой при попытке скомпилировать SP.
Вот в основном то, что у меня есть:
IF EXISTS ... DROP PROCEDURE
SELECT TOP 1 Version INTO #CurrentVersion FROM Application_Version ORDER BY UpdateDate DESC
IF NOT EXISTS (SELECT 1 FROM #CurrentVersion WHERE Version = 10)
RAISERROR ('This is for U10 only. Check the application version.', 20, 1) WITH LOG
CREATE PROCEDURE ....
RAISERROR приводит к тому, что SP не попадает в БД, и я получаю ошибку, но я также получаю ошибки схемы из-за изменений схемы в прошлом. Поскольку SP должен быть первым оператором в пакете, я не могу использовать IF / ELSE, а NOEXEC дает те же результаты, что и RAISERROR (без ошибки).
Есть идеи, что можно сделать, чтобы получить все те же результаты, что и выше, без SP, проверяющего схему, если она попадает в RAISERROR, так что я не получаю кучу дополнительных сообщений, о которых сообщалось?