Проект Sql Server: сценарии после развертывания

У меня есть проект базы данных, и мне интересно, как лучше всего добавлять заранее определенные данные, такие как статусы, типы и т. д.

  • Есть ли у меня 1 скрипт после развертывания для каждого статуса/типа? ИЛИ
  • Есть ли у меня 1 сценарий после развертывания, который использует :r someStatus.sql для каждого сценария состояния/типа?

Я полагаю, что третий вариант может заключаться в том, чтобы все вставки были в одном гигантском скрипте, но мне это кажется ужасным. В прошлом я использовал вариант 2, но я не уверен, почему это было сделано именно так. Предложения?


person OnResolve    schedule 18.01.2013    source источник
comment
Ради интереса, сколько предопределенных данных есть в вашем приложении?   -  person David Atkinson    schedule 24.01.2013
comment
Я не уверен, как это можно измерить, но есть статусы для заказов, счетов и т. д., некоторые или большинство из них также имеют типы. Все, что является статусом или типом, имеет эти таблицы поиска. Так что в целом, это небольшой процент от ФАКТИЧЕСКИХ данных, конечно, но я бы сказал, что для производственной сборки рассчитывается около 10-12 таблиц. Но для тестовых сборок у меня есть гораздо больше, которые развертывают тестовые данные.   -  person OnResolve    schedule 24.01.2013


Ответы (2)


Есть инструменты для упаковки ваших данных. Я с удовольствием использовал RedGate SQL Packager (не бесплатно) и XML-файлы данных DBUnit, извлеченные из среды разработки и отправленные в базу данных с задачей Ant <dbunit>.

person flup    schedule 18.01.2013

Для нашего сценария мы используем комбинацию № 3 и № 2. Если у нас есть новая сборка, мы заполняем пустые базы данных, устанавливаем вставки после развертывания, которые мы обычно используем, чтобы они не запускались, а затем заполняем данные после всей сборки/публикации. Я также склонен группировать связанные вставки, поэтому, если я вставляю 15 статусов, я добавляю их в один скрипт. Недостатком этого является то, что вам нужно убедиться, что ваш сценарий может быть повторно запущен и не вызовет проблем, поэтому вставка во временную таблицу, а затем выполнение левого соединения с вашей фактической таблицей может быть лучшим решением. Это снижает количество сценариев до более управляемого размера.

Для инкрементных выпусков я предпочитаю пакетную вставку с помощью Story (используя Scrum), чтобы связанные сценарии шли вместе. Это также помогает мне узнать, когда сценарий был запущен в производстве и его можно безопасно удалить из проекта.

Вы также можете подумать о том, чтобы иметь какую-то «справочную» базу данных, в которой вы храните только эталонные значения, а затем, возможно, такой инструмент, как Red-Gate Data Compare, чтобы получить соответствующий набор данных. Версия Pro может быть автоматизирована/скриптована, поэтому у вас может быть более простой способ получения новых данных для тестирования. Это может быть вашим лучшим решением в долгосрочной перспективе, поскольку вы можете легко настроить, какие таблицы вы хотите копировать, и установить фильтры для данных.

person Peter Schott    schedule 28.05.2013