Может ли проект базы данных VS2010 создавать повторно запускаемые сценарии развертывания? - PullRequest
0 голосов
/ 16 мая 2011

Я использую проекты баз данных VS2010 как способ создания версий кода нашей базы данных между версиями выпуска. Пока что предоставленное решение кажется хорошим; Однако есть одна проблема, я задаюсь вопросом, столкнулся ли кто-нибудь еще.

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

Кто-нибудь знает, есть ли способ настроить VS2010 для создания повторно запускаемых сценариев обновления, то есть отбрасывать sprocs, только если они существуют и т. Д. ?

Ответы [ 4 ]

0 голосов
/ 29 апреля 2016

В Visual Studio 2015 (и, возможно, более ранних версиях) вы можете настроить сценарий публикации на включение одной транзакции с обработкой ошибок. Смотрите ниже:

Публикация SSDT с «Включить транзакционные сценарии»

Завершение обычного сценария в более крупную транзакцию для меня не подойдет, потому что сценарий вводит обработку ошибок sqlcmd вне сценариев до / после развертывания, доступных в проекте Visual Studio:

:on error exit

Это останавливает использование try-catches для эффективной обработки ошибок и оставляет вам необходимость откатить транзакцию вручную

Примечание: сценарии до / после развертывания запускают вне транзакции, созданной параметром «Включить транзакционные сценарии», поэтому вам придется управлять ими самостоятельно

0 голосов
/ 10 июня 2011

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

Затем его можно использовать с vsdbcmd для созданияСценарий изменения для обновления более ранней версии БД в соответствии с версией, определенной в файле .dbschema.Это предоставит вам ваш повторно запускаемый скрипт обновления, плюс, если он потерпит неудачу, он сообщит вам, почему он потерпел неудачу, и никаких изменений в вашей целевой БД внесено не будет.Однако его можно будет использовать повторно только при переходе с одной и той же версии базы данных на одну и ту же версию базы данных.

Одной из основных причин, по которой мы перешли к проектам баз данных (из сценариев redgate sql сравнить, сгенерированных), был отказ отЭта проблема.Все наши сценарии обновления были от конкретной версии к определенной версии.Одним из основных преимуществ проектов БД является то, что вам не нужно иметь повторно запускаемые сценарии.У вас есть файл .dbschema, который определяет, как должна получиться цель, и вы позволяете VSDBCMD выполнять всю работу.Мы даже не склонны генерировать сценарии, мы используем VSDBCMD для непосредственного обновления базы данных.

Если вы идете по этому маршруту, http://blogs.msdn.com/b/bahill/archive/2009/02/21/deploying-your-database-project-without-vstsdb-installed.aspx имеет список предварительных требований, необходимых для запуска VSDBCMD за пределамивашей среды разработки.

0 голосов
/ 14 июня 2012

Недостаток vsdbcmd заключается в том, что вам придется перепрыгивать через голову, чтобы добавить столбцы, не являющиеся NULL, в таблицу.Особенно, если у вас есть много данных там.

0 голосов
/ 16 мая 2011

Могу проверить Пакет Sql от RedGate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...