5

Возможно ли развернуть разные наборы данных семян для разных профилей публикации с помощью проекта базы данных Sql Server Data tools?Развертывание различных данных семян для разных профилей публикации с помощью visual studio ssdt?

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

Почему мы хотим это сделать?

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

ответ

7

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

if @@servername = 'dev_server' 
begin 
    insert data here 
end 

Немного уборщика версии иметь различный сценарий файлы для каждой среды и импортирующие их через: г импорт Sqlcmd сценария, так что вы могли бы:

  • PostDeploy.sql
  • DevServer.sql
  • QAServer.sql

затем

if @@servername = 'dev_server' 
begin 
    :r DevServer.sql 
end 
if @@servername = 'qa_server' 
begin 
    :r QAServer.sql 
end 

Вам нужно будет убедиться, что пути к файлам .sql правильно и копировать их с dacpac.

Вам не нужно использовать @@ servername, вы можете использовать переменные sqlcmd и передавать их для каждой среды, которая снова немного чище, чем имена жестко заданных серверов.

Второй подход заключается в moodify в dacpac изменить delpoy сценарий после вашей окружающей среды одним конкретным, это мой любимый и лучше всего работает как часть CI сборки, мой процесс:

  1. Проверить -in изменения
  2. Сложение Сервер строит dacpac
  3. Сложение принимает dacpac, копии Дев, Qa, прод и т.д. окр папки
  4. Сложение заменяет пост-разворачивать скрипт в каждой из окр конкретного сценария

Я вызываю сценарии PostDeploy.dev.sql, PostDeploy.Qa.sql и т. Д. И устанавливаю действие «Ничего» или они добавляются как «Сценарий, а не в сборку».

Для замены сценария после развертывания вам просто нужно использовать.Чистая Упаковка API или несколько примеров, посмотрите на мою Dir2Dac демо, который делает это и многое другое:

https://github.com/GoEddie/Dir2Dac

более конкретно:

https://github.com/GoEddie/Dir2Dac/blob/master/src/Dir2Dac/DacCreator.cs

var part = package.CreatePart(new Uri("/postdeploy.sql", UriKind.Relative), "text/plain"); 

    using (var reader = new StreamReader(_postDeployScript)) 
    { 
       reader.BaseStream.CopyTo(part.GetStream(FileMode.OpenOrCreate, FileAccess.ReadWrite)); 
    } 
+0

Благодарим вас за подробный ответ. На данный момент я думаю, что я перейду к методу множественного сценария, описанному в разделе «Несколько более чистая версия - иметь разные файлы сценариев для каждой среды». возможно, мы рассмотрим метод DacPac по мере необходимости. – Dib

+0

Мне нужно посмотреть на этот последний вариант, который вы используете, Ред. Учитывая возможный размер некоторых из этих начальных сценариев населения, это будет ОГРОМНЫЙ объем данных для включения в каждый скрипт. Мы рассматриваем возможность просто взглянуть на переменную сборки, если она «Новая», и запускать новые вещи после публикации прямо сейчас (что может быть лучшим/более простым выбором на данный момент). –

2

Я решил эту проблему, написав сценарий Powershell, который запускается автоматически при публикации командой Exec в Project-файле.

Создает файл сценария, который включает в себя все сценарии, найденные в папке в проекте (папка называется как целевая среда).

Этот скрипт затем включен в пост-развертывающий скрипт.

+0

Хм ... Это тоже неплохое решение. – Dib