#sql-server-data-tools
#sql-server-data-tools
Вопрос:
Мне интересно, есть ли у кого-нибудь пример установки события предварительной сборки (свойства проекта, события сборки) в проекте SSDT, чтобы мы могли изменить действие сборки файлов с ‘build’ на None с учетом конфигурации проекта.
Что-то вроде: если $configuration равно x, тогда установите BuildAction = ‘none’ на abc.sql, иначе установите BuildAction = ‘build’
С уважением
Комментарии:
1. Нет, это не может быть сделано именно так. Если вы опишете свою проблему, может быть просто другое ее решение
2. Две сохраненные процедуры с одинаковыми именами, но разные реализации, основанные на таблицах среды, отличаются. В настоящее время необходимо вручную пометить как сборку, но хотите автоматизировать.
Ответ №1:
Если у вас разные реализации одной и той же хранимой процедуры, то у вас, вероятно, будет 2 варианта:
- Создайте условную логику внутри SP. Вам нужно будет определить значение переменной при публикации, и в коде у вас будет что-то вроде:
IF ('$(EnvVar)' = 'PROD')
BEGIN
-- code needed to be executed in PROD
END
IF ('$(EnvVar)' = 'DEV')
BEGIN
-- code needed to be executed in DEV
END
- Создайте 2 (или, возможно, потребуется больше) проекта, в которых будет эта одна процедура (или набор объектов) с разными реализациями. Затем добавьте ссылку на ваш основной проект с опцией «Та же база данных». Затем создайте разные профили публикации в проектах и используйте там правильные строки подключения.
Комментарии:
1. Привет, спасибо за ответ. Это то, что я пробовал — проблема в том, что он не создавал / компилировал, поскольку таблицы в одной среде не существуют в другой (сохраненные процедуры используются как интерфейсы с разными реализациями). Другая попытка заключалась в использовании сценария после развертывания и условного включения — однако я столкнулся с проблемой с пакетными операторами.
Ответ №2:
Я решил эту проблему, используя событие предварительной сборки для копирования клона сохраненных процедур в правильное местоположение в зависимости от настройки сборки. Итак, я также отметил это как ответ.
Я мог бы также использовать файл .tt для создания хранимой процедуры во время сборки.