Любой, кто использует систему управления версиями SQL от Red Gate

Мы искали возможные решения для нашего элемента управления SQL Source. Я только что наткнулся на Red Gates SQL Source Control и задался вопросом, реализовал ли кто-нибудь его? Я собираюсь загрузить пробную версию и попробовать, но просто хотел посмотреть, есть ли у других реальный опыт.

Как всегда высоко ценю вклад

--S


person scarpacci    schedule 23.08.2010    source источник
comment
Я также хотел бы получить обратную связь — нам очень нужен какой-то контроль версий для наших SQL-серверов, и, несмотря на все наши усилия, база данных Visual Studio не справляется с этим.   -  person SqlRyan    schedule 23.08.2010
comment
Я скачал пробную версию. Жаль, что не поддерживает получение старых ревизий из репозитория, только самые последние. На самом деле я не совсем уверен, в чем разница между SQL Source Control и SQL Compare?   -  person atricapilla    schedule 23.08.2010
comment
О, так вам нужно перейти в реальную папку репозитория SVN, чтобы просмотреть исторические старые версии?   -  person scarpacci    schedule 23.08.2010
comment
Здесь написано: red-gate.com/supportcenter/ Получение предыдущих версий SQL Source Control в настоящее время не поддерживает получение определенных версий объекта в SQL Server Management Studio. Чтобы получить конкретную версию или ревизию базы данных, используйте свою систему управления исходным кодом для создания локальной версии папки сценариев, представляющей эту ревизию, и синхронизируйте ее с базой данных с помощью SQL Compare.   -  person atricapilla    schedule 24.08.2010
comment
Вскоре можно будет получить старые версии непосредственно из системы управления версиями SQL, хотя для этого по-прежнему потребуется лицензия SQL Compare Pro, поэтому мы настоятельно рекомендуем приобрести полный пакет SQL Developer Bundle. Дэвид Аткинсон, Red Gate Software.   -  person David Atkinson    schedule 28.08.2010
comment
Для получения информации об интеграции управления версиями SQL и развертывания в рабочий процесс CI: - troyhunt.com/2010/07/rocking-your-sql-source-control-world.html - troyhunt.com/2011/02/automated-database-releases-with.html   -  person Chris Haines    schedule 19.06.2012


Ответы (4)


Я использую SQL Compare для генерации скриптов при переходе от dev -> test -> production, и это экономит мне массу времени.

Однако для контроля версий мы используем SVN и ScriptDB (http://scriptdb.codeplex.com/). В основном я использую систему управления версиями SQL-скриптов для отслеживания изменений. Я думаю, что откат версии базы данных редко (если вообще когда-либо) работает, поскольку данные могли измениться при внесении изменений в структуру.

Это прекрасно работает для нескольких наших текущих проектов (самый большой — 200 таблиц и 2000 sprocs). Однако основной причиной для этого является стоимость, поскольку не все члены команды должны покупать SQL Compare (я избегаю добавления зависимостей в коммерческие проекты, если это действительно не нужно).

person Andreas Paulsson    schedule 25.08.2010
comment
Я думаю, вы всегда можете использовать Red-Gate SQL Data Compare для справочных таблиц, хотя в любом случае это проблема. - person adolf garlic; 26.08.2010
comment
Как вы говорите, это работает довольно хорошо для справочных таблиц, но если вы изменяете структуру таблицы сущностей (например, клиентов) или изменяете ассоциации, у вас возникают проблемы, когда дело доходит до воссоздания старой версии базы данных. - person Andreas Paulsson; 26.08.2010
comment
Мы надеемся на поддержку статических данных из пользовательского интерфейса системы управления версиями SQL в версии 2.0. Мы понимаем, что, несмотря на возможность использования SQL Data Compare, интеграция с SSMS значительно улучшит взаимодействие с пользователем. Дэвид Аткинсон, Red Gate Software. - person David Atkinson; 28.08.2010
comment
SQL Source Control 2 теперь поддерживает статические данные. Мы были бы признательны, если бы вы могли взглянуть и сообщить нам, если это теперь соответствует вашим потребностям. - person David Atkinson; 30.03.2011

Я обновил свой исходный пост ниже, чтобы отразить изменения в последних версиях SQL Source Control (3.0) и SQL Compare (10.1).

Поскольку этот вопрос был задан более года назад, мой ответ может быть не очень полезен для вас, но для тех, кто в настоящее время оценивает SSC, я решил добавить свои пять копеек. Мы только начали использовать SQL Source Control (SSC), и в целом я пока им вполне доволен. Однако у него есть некоторые особенности, особенно если вы работаете в среде с общей базой данных (в отличие от каждого разработчика, работающего локально) и особенно в устаревшей среде, где объекты в одной базе данных случайным образом распределяются между группами разработчиков.

Чтобы дать краткий обзор того, как мы используем продукт в нашей организации, мы работаем в общей среде, где все мы вносим изменения в одну и ту же базу данных разработки, поэтому мы присоединили общую базу данных к репозиторию системы управления версиями. Каждый разработчик несет ответственность за внесение изменений в объекты в базе данных с помощью SQL Server Management Studio (SSMS), и когда они будут завершены, они могут зафиксировать свои изменения в системе управления версиями. Когда мы готовы к промежуточному развертыванию, мастер сборки (я) объединяет разрабатываемую ветку кода базы данных с основной (промежуточной) веткой, а затем запускает SQL Compare, используя версию репозитория основной ветки базы данных в качестве источника и живую. промежуточную базу данных в качестве целевой, а SQL Compare сгенерирует необходимые сценарии для развертывания изменений, внесенных в промежуточную среду. Промежуточное развертывание в рабочей среде работает аналогичным образом. Еще один важный момент, который следует отметить, заключается в том, что, учитывая тот факт, что мы совместно используем одну и ту же базу данных с другими группами разработчиков, мы используем встроенную функцию SSC, которая позволяет создавать фильтры для объектов базы данных по имени, типу и т. д. Мы вручную настроить фильтры для объектов нашей конкретной группы, исключая все другие объекты, чтобы мы случайно не зафиксировали изменения другой группы разработчиков при выполнении наших развертываний.

Так что в целом это довольно простой продукт в настройке и использовании, и это действительно приятно, потому что вы всегда работаете с живыми объектами в SSMS, а не с отключенными файлами сценариев, хранящимися в отдельном исходном репозитории, которые рискуют рассинхронизироваться. . Это также хорошо, потому что SQL Compare создает сценарии развертывания для вас, поэтому вам не нужно беспокоиться о внесении ошибок, как если бы вы создавали сценарии самостоятельно. А поскольку SQL Compare — очень зрелый и стабильный продукт, вы можете быть уверены, что он создаст для вас нужные сценарии.

С учетом сказанного, однако, вот некоторые из причуд, с которыми я столкнулся до сих пор:

  • SSC довольно болтлив из коробки с точки зрения связи с сервером базы данных, чтобы отслеживать элементы базы данных, которые не синхронизированы с репозиторием системы управления версиями. Он опрашивает каждые несколько миллисекунд, и если вы добавите несколько разработчиков, работающих с одной и той же базой данных с помощью SSC, вы можете себе представить, что наши администраторы баз данных были не очень довольны. К счастью, вы можете легко уменьшить частоту опроса до чего-то более приемлемого, хотя и за счет потери отзывчивых визуальных уведомлений об изменении объектов.
  • Используя функцию фильтрации объектов, вы не можете легко определить, глядя на объекты в SSMS, какие объекты включены в ваш фильтр. Таким образом, вы не знаете наверняка, находится ли объект под контролем источника, в отличие от Visual Studio, где значки используются для обозначения объектов, контролируемых источником.
  • Графический интерфейс фильтрации объектов очень неуклюж. Из-за того, что мы работаем в устаревшей среде базы данных, в настоящее время нет четкого разделения между объектами, которыми владеет наша команда, и объектами, принадлежащими другим командам, поэтому для предотвращения случайного внесения/развертывания изменений других команд , мы настроили схему фильтрации, чтобы явно включать каждый конкретный объект, которым мы владеем. Как вы можете себе представить, это становится довольно громоздким, а поскольку графический интерфейс для редактирования фильтров настроен на ввод одного объекта за раз, это может стать довольно болезненным, особенно при попытке настроить вашу среду в первый раз (в итоге я написать заявление об этом). В будущем мы создадим новую схему для нашего приложения, чтобы упростить фильтрацию объектов (помимо того, что это в любом случае лучшая практика).
  • Используя модель общей базы данных, разработчикам разрешено фиксировать любые ожидающие изменения в базе данных, контролируемой источником, даже если эти изменения не принадлежат им. SSC выдает вам предупреждение, если вы пытаетесь зарегистрировать кучу изменений, что эти изменения могут быть не вашими, но кроме того, что вы сами по себе. На самом деле я считаю это одной из самых опасных «причуд» SSC.
  • SQL Compare в настоящее время не может совместно использовать фильтры объектов, созданные SSC, поэтому вам придется вручную создать соответствующий фильтр в SQL Compare, поэтому существует опасность, что они могут рассинхронизироваться. Я просто вырезал и вставлял фильтры из базового файла фильтра SSC ​​в фильтр проекта SQL Compare, чтобы избежать работы с неуклюжим графическим интерфейсом фильтрации объектов. Я полагаю, что следующая версия SQL Compare позволит использовать фильтры совместно с SSC, так что, по крайней мере, эта проблема носит краткосрочный характер. (ПРИМЕЧАНИЕ. Эта проблема устранена в последней версии SQL Compare. Теперь SQL Compare может использовать фильтры объектов, созданные SSC.)
  • SQL Compare также не может сравниваться с репозиторием базы данных SSC при прямом запуске. Его нужно запускать из SSMS. Я считаю, что следующая версия SQL Compare предоставит эту функциональность, так что это еще одна краткосрочная проблема. (ПРИМЕЧАНИЕ. Эта проблема устранена в последней версии SQL Compare.)
  • Иногда SQL Compare не может создать правильные сценарии для перевода целевой базы данных из одного состояния в другое, обычно в случае, когда вы обновляете схему существующих таблиц, которые не являются пустыми, поэтому в настоящее время вам приходится писать сценарии вручную. и управлять процессом самостоятельно. К счастью, это будет решено с помощью «скриптов миграции» в следующем выпуске SSC, и, глядя на раннюю версию продукта, кажется, что реализация этой новой функции была хорошо продумана и спроектирована. (ПРИМЕЧАНИЕ. Функциональность сценариев миграции была официально выпущена. Однако в настоящее время она не поддерживает ветвление. Если вы хотите использовать сценарии миграции, вам нужно будет запустить sql для сравнения с исходной веткой кода разработки... той, где вы проверили свои изменения... что довольно неуклюже и вынудило меня изменить мой процесс сборки далеко не идеальным способом, чтобы обойти это ограничение. Надеюсь, это будет исправлено в будущем выпуске.)

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

person Mary Hamlin    schedule 27.10.2011
comment
Хороший подробный ответ. В настоящее время мы оцениваем инструмент. Как насчет сценария миграции и ветвления, он изменился в последней версии? - person Yaroslav; 17.10.2014
comment
На самом деле, я думаю, мне следовало вернуться, чтобы обновить свой ответ. В итоге у меня было так много проблем с продуктом, и я потратил так много времени на то, чтобы присматривать за ним и устранять недостатки, что я больше не рекомендую его. В настоящее время мы используем Fluent Migrator, и я очень доволен им. По сути, все написано в виде скрипта миграции, и ваше приложение может быть настроено на автоматическое обновление до последней версии — концепция, которая, как мне кажется, была впервые применена в Ruby on Rails. Скрипты должны быть проверены в системе контроля версий, поэтому я считаю, что это может позаботиться о ветвлении. - person Mary Hamlin; 17.10.2014

Мы провели всестороннюю оценку продукта Red Gate и обнаружили несколько серьезных недостатков. Если вы хотите посмотреть, кто изменил объект, вы не сможете сделать это без прав системного администратора. Продукт должен просмотреть трассировку на вашем сервере, для чего требуются эти права. Я работаю в команде из 5+ человек, и незнание того, у кого есть ожидающие изменения, остановит нас от использования продукта.

person Sam Stange    schedule 27.04.2011
comment
Если я правильно понимаю, все ваши разработчики получают доступ и развертывают вещи непосредственно в производстве? Или у них даже нет привилегий SA на их dev box? В любом случае, я думаю, что это, вероятно, крайний случай с точки зрения использования. Обычно все разработчики имеют SA на своей машине, время от времени/часто имеют доступ SA на коробке QA, и обычно только 1 человек или несколько администраторов баз данных имеют доступ к prod, и в этом случае вы всегда знаете, кто изменил prod. мои 2 цента. - person JDPeckham; 02.11.2012

Я только начал работать в новой компании, и они используют Redgate SQL Source Control для всех своих проектов, среди которых есть большой и сложный. Он хорошо справляется со своей задачей в тандеме с TFS. Единственным недостатком, с моей точки зрения, является то, что интеграция с SQL Server Management Studio крайне нестабильна. Частые сбои SQL Server Management Studio происходят при установке инструментов.

person swissmawi    schedule 15.01.2019