0

Как вы можете использовать значения таблиц среды для конкретных объектов в своем проекте базы данных и убедиться, что они только развертываются в среде, в которой вы развертываете, с помощью управления выпуском? Мы уже давно используем Release Management, но только для .NET-кода. Мы несколько новы в области DACPAC, но легко находить и использовать с помощью управления релизами. Однако теперь мы хотим расширить эту возможность до таблицы с переменными конфигурации для каждой среды. Как сделать эту часть нашего проекта базы данных и убедиться, что каждая среда имеет свою уникальную версию данных?Проект базы данных в нескольких средах?

ответ

1

Используйте SSDT для публикации схемы базы данных и справочных данных; не используйте его для управления настройками среды.

Лично я бы (и имел) запустить вторичный пост-развертывание сценария, настроив значения, специфичные для конкретной среды. Это не отличается от размещения правильных значений в файле web.config после развертывания веб-приложения. Это то, что вы используете в своем инструменте развертывания.

+0

Спасибо за отзыв. В нашем случае у нас есть определенные поля в нашей базе данных, которые указывают на специфические для окружающей среды местоположения (пути UNC) и/или клиентскую информацию, которая отличается от TEST до PROD; URL-адреса и/или идентификаторы, которые не контролируются нашей системой. Поэтому наша задача заключалась в том, как запустить сценарий после развертывания, специфичный для каждой среды. Как вы увидите по другому ответу, мы обнаружили обнаружение переменных SQL Command в сочетании с публикациями профилей, чтобы помочь нам определить, какие сценарии запускать. –

+0

Проблема, с которой мы сталкиваемся, заключается в том, что SSDT хочет «исправить» всех тех пользователей/назначений ролей, которых нет в вашем проекте. Мы не хотим тех, кто в проекте, потому что они не должны быть в производстве. –

0

Игнорирование части управления релизом на вопрос (потому что это зависит от того, какой режим вы используете и используете ли вы конфигурационные переменные в RM и т. Д.), Вы можете, конечно, передать значения, специфичные для среды, в ваше исполнение dacpac (для использования в данных «postdeploy» скрипты) с использованием переменных sqlcmd, определенных в токенизированном файле публикации. В широком смысле процесс:

  • Используйте стандартный синтаксис sqlcmdvar в сообщении развертывания сценария, например, вставить в таблице значений «$ (my_env_var)»

  • обновление свойства проекта базы данных (вкладка SQLCMD), чтобы включить ваш новая переменная, которая обеспечивает ваш dacpac ожидает значение при выполнении

  • Сформировать publish.xml файл (который теперь должен включать в себя узел)

  • Crea te a publish.release.xml, который содержит инструкции преобразования для обновления значения вашего узла, чтобы ввести токен, например. ## my_env_var ##

  • обновление файл проекта базы данных (.sqlproj), чтобы включать в себя инструкции для преобразования publish.xml по сборке с использованием содержимого publish.release.xml

Его довольно долго наматывается, но то, что вы получаете из вышеперечисленного, - это файл dacapac + tokenised publish в вашем сборке, готовый к деоклинизации и выполнению вашего процесса развертывания. Это RM или любой другой инструмент.

+0

Спасибо. Это в основном то, что я выяснил после публикации вчера. Ключом было выяснить, как использовать переменные командной строки SQL, которые можно установить в сочетании с файлами публикации. Я дал вам голосование, но я слишком новичок в Stack Overflow, чтобы он появился публично. –

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

  • Нет связанных вопросов^_^