4

Существует ли способ/механизм для запуска другого набора сценариев после развертывания в проекте базы данных на основе SSDT в Visual Studio 2012/2013, основанный на конфигурации сборки? Я хотел бы предварительно заполнить свои данные для тестирования/непрерывной интеграции путем развертывания с помощью конфигурации «Тестирование», но, естественно, не хочу этого делать для других сред. Я не могу найти способ условно связать сценарий после развертывания с конфигурацией сборки, хотя это кажется мне действительно странным.Проект базы данных VS 2013: сценарии после развертывания для запуска на основе конфигурации сборки

ответ

3

Вы также можете использовать переменные SQLCMD, чтобы сделать что-то подобное. Если значение == «Тест», запустите один набор значений. Если нет, запустите что-то еще. Я писал о том, что здесь:

http://schottsql.blogspot.com/2013/05/trick-to-not-run-prepost-sql-on-publish.html

Это не сделано на сборке и сценарии всегда включаются таким образом, но если это не проблема, это дает вам возможность легко писать код для запуска на различных средах без труда.

+0

Хм ... как вы устанавливаете значение SQLCMD как конфигурацию сборки? Я попытался использовать '$ (Конфигурация)', но он просто проанализировал это значение и сохранил «Debug». –

+0

Мы создаем Publish Profiles, чтобы сделать все это. Затем мы создаем этот профиль публикации. Я знаю, что есть возможность передать значения SQLCMD, но не уверен, что это за пределами моей головы. Мы чаще всего строим сначала, а затем публикуем w/SQLPackage для установки значений. –

+0

Я вижу! Спасибо. –

7

Вы можете сделать это, отредактировав файл .sqlproj, используемый MSBuild. Затем, когда вы строите конфигурацию «Тестирование», вы получаете другое содержимое dacpac при создании в режиме «Release». Например:

  • Создайте проект и добавьте PostDeployment скрипт
  • Выгрузить проект и редактировать .sqlproj файл
  • Произведите замену ItemGroup, содержащий сценарий PostDeploy выглядеть следующим образом:

<ItemGroup Condition=" '$(Configuration)' == 'Release' "> <PostDeploy Include="Debug.PostDeployment1.sql" /> </ItemGroup>

  • Построение конфигурации отладки и распаковка dacpac: no postdeploy.sql fil e будет включен
  • Постройте в конфигурации тестирования и распакуйте dacpac: файл postdeploy.sql будет там.
+0

blech, это уродливо ... но похоже, что это сработает. –

Смежные вопросы