Есть несколько способов, вы можете достичь этого, первый подход для проверки окружающей среды в сценарии после развертывания таких как ..
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 сборки, мой процесс:
- Проверить -in изменения
- Сложение Сервер строит dacpac
- Сложение принимает dacpac, копии Дев, Qa, прод и т.д. окр папки
- Сложение заменяет пост-разворачивать скрипт в каждой из окр конкретного сценария
Я вызываю сценарии 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));
}
Благодарим вас за подробный ответ. На данный момент я думаю, что я перейду к методу множественного сценария, описанному в разделе «Несколько более чистая версия - иметь разные файлы сценариев для каждой среды». возможно, мы рассмотрим метод DacPac по мере необходимости. – Dib
Мне нужно посмотреть на этот последний вариант, который вы используете, Ред. Учитывая возможный размер некоторых из этих начальных сценариев населения, это будет ОГРОМНЫЙ объем данных для включения в каждый скрипт. Мы рассматриваем возможность просто взглянуть на переменную сборки, если она «Новая», и запускать новые вещи после публикации прямо сейчас (что может быть лучшим/более простым выбором на данный момент). –