Visual Studio 2010: есть ли способ развернуть один объект базы данных, который сохраняет объект в обычных сборках? - PullRequest
3 голосов
/ 11 августа 2010

Разработчики выразили желание развернуть один объект базы данных из проекта Sql Server 2008, например хранимой процедуры, без использования функций сравнения сборки / развертывания или сравнения схем.

Чтобы включить это, разработчики создали свои сценарии объектов базы данных, включающие проверки «если существует ... отбрасывание» в верхней части сценария, и включили операторы предоставления для объектов в свои сценарии.

Это приводит к ошибкам сборки, которые затем препятствуют работе функций сборки / развертывания или сравнения схем. Таким образом, разработчики помечают объект как «не в сборке», но тогда объект вообще нельзя развернуть с помощью сборки / развертывания или сравнения схемы.

Кто-нибудь нашел способ быстрого развертывания одного объекта базы данных из Visual Studio, который не включает сравнение схемы или сборку / развертывание, которая не удаляет объект из обычного процесса сборки? Ручное копирование / вставка не вариант, но скрипты / макросы, которые эффективно делают то же самое, были бы жизнеспособными.

Ответы [ 2 ]

1 голос
/ 10 ноября 2012

Инструменты данных SQL Server (SSDT) ​​теперь предоставляют эту функцию для сравнения. Индивидуальные различия, выявленные в сравнении, могут быть использованы. Мы обнаружили, что во время разработки публикация приводит к наложению одновременных изменений, которые другие разработчики вносят в общий сервер базы данных разработки. Инструмент сравнения работал довольно хорошо, за исключением очень раздражающей проблемы сбоев, возникающей при закрытии окна сравнения. Мы используем 32-битную Vista с 3 ГБ ОЗУ и VS 2010. Эта проблема может не возникать в других конфигурациях.

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

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

  • Если ваш проект развернут где-то [1],
  • , тогда должно быть соответствующей веткой / меткой [2] в вашем исходном хранилище.
  • Если вы измените один объект [delta] из вышеуказанной базовой линии [2] и создадите новую версию [3],
  • , то при развертывании [3] в [1] развертываниескрипт должен найти только одно различие, и общий эффект изменения [delta] - это все, что будет применено.

Итак, в теории нет причин не простосборка и развертывание.
СОВЕТ: Принимая новую парадигму, стоит полностью принять ее;частичное усыновление имеет тенденцию вызывать собственный набор проблем.

Однако, тем не менее, я могу помочь.

У нас есть аналогичная потребность, потому что фактическое развертывание - этовне нашего контроля.Мы контролируем только часть базы данных и должны предоставить свои изменения другой команде для проверки.
Мы должны предоставить индивидуальные «автономные» сценарии для каждого объекта с , если существует..drop впадение и предоставляют разрешение внизу.
Однако мы хотим получить другие преимущества работы с проектом базы данных, а затем просто скопировать отдельные файлы сценариев, когда мы "развернем".

Решение, которое мы нашли, заключалось в том, чтобы поместить дополнительные «биты» в блок комментария следующим образом:

/*SINGLE_OBJECT_DEPLOYMENT
if exists (...)
  DROP ...
--*/

--/*SINGLE_OBJECT_DEPLOYMENT
if exists (...)
  DROP ...
--*/

Обратите внимание, что простой поиск и замена /*SINGLE_OBJECT_DEPLOYMENT на --/*SINGLE_OBJECT_DEPLOYMENT включаетзакомментированный код, чтобы его можно было легко поместить в макрос или другой полуавтоматический процесс.

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