Кто-нибудь использует «проекты базы данных» в Visual Studio? - PullRequest
18 голосов
/ 16 марта 2009

Я недавно попробовал (версия SQL 2008), и я нахожу их вполне нормальными. Ну, единственная проблема заключается в том, что мастер не достаточно умен, чтобы обновить структуру базы данных без предварительного удаления всех данных. Поэтому эти проекты не используются на практике?

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

Что с ними не так?

Ответы [ 5 ]

9 голосов
/ 16 марта 2009

Я использую проект базы данных, который является частью Visual Studio Database Edition. Это отличный инструмент. По сути, вы определяете всю схему в сценариях создания, которые затем проверяются в системе контроля версий. Затем в него встроены инструменты для генерации разностных скриптов, которые, кстати, не удаляют данные.

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

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

Если у вас есть Team Studio - Team Suite или Development Edition, то вы можете использовать Database Edition.

Попробуй и это большое развитие в разработке баз данных

8 голосов
/ 16 марта 2009

Как и Glennular, мы используем их для контроля версий нашей схемы и s'procs.

Хотя у нас достаточно продвинутая структура контроля версий (CI, автоматическое развертывание в dev, развертывание в один клик для stage и prod); мы не включаем ни один из проектов БД в эту структуру. Мы просто пока этому не доверяем.

ОБНОВЛЕНИЕ: (для выхода в космос)

У нас есть отдельные проекты TFS для функциональных областей компании (Sales, Marketing и т. Д.). В каждом проекте TFS у нас есть папка Main и Production. У нас также есть один проект TFS, который содержит проекты базы данных, и еще один, который содержит общие сборки / проекты Visual Studio.

После выпуска мы разветвляемся от Main к Production. У нас нет промежуточной ветви, поскольку мы движемся слишком быстро, чтобы справиться с этим. Правильно или нет, наша производительность частично измеряется количеством выпусков уровня производства, которые мы делаем за неделю; исправления ошибок, новые функции и т. д.

CI настраивается в ветви Main таким образом, что при каждой регистрации сервер Build развертывается в наших средах DEV. Затем запускаются модульные и веб-тесты, и качество сборки автоматически устанавливается на «Разработка», если оно завершается успешно. Когда кто-то изменяет Качество сборки на «В промежуточном состоянии», это приводит к тому, что для всех предыдущих сборок «В промежуточном режиме» устанавливается значение «Отклонено», и при этом эти сборки передаются на наши промежуточные серверы при обновлении файлов конфигурации, чтобы они указывали на правильные серверы. (Для этого я использовал сценарии TFS Deployer и PowerShell).

QA проводит тестирование наших промежуточных серверов. Как только они счастливы, производственная команда меняет Качество сборки на «Производство». Это приводит к тому, что сборка отправляется в рабочую область, которая затем вручную копируется в правильное местоположение. После завершения, производство уведомляет разработчиков, которые затем разветвляют эту версию в папку Production. QA также уведомляется о том, кто затем проводит ряд производственных тестов, чтобы убедиться, что все действительно работает должным образом.

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

Кроме того, наши БА отслеживают рабочие элементы через Team System Web Access и знают, когда эти элементы находятся в производстве.

Хотя наши администраторы баз данных используют Database Edition (GDR), они не были впечатлены уровнем контроля для автоматического развертывания. Я надеюсь, что Rosario привнесет лучший контроль развертывания в линейку продуктов; но до тех пор у нас есть TFS Deployer и powershell.

5 голосов
/ 16 марта 2009

Мы их используем. Мы сохраняем все наши схемы создания / обновления сценариев и хранимых процедур. Основная цель заключается в том, что мы можем подключить проект к SourceSafe или SVN.

Это простой способ контролировать версию ваших скриптов SQL.

Немного странно пытаться провести тестирование SQL в VS, но вы найдете способы обойти это.

Обновление

На самом деле он встроен в наши сценарии развертывания, наш инструмент развертывания, проходит через проект БД (за исключением помеченных папок) и запускает весь сценарий. Мы только что создали быстрый инструмент для запуска проекта. Если у кого-то есть другие решения для развертывания проекта БД, это было бы полезно.

1 голос
/ 28 мая 2009

Я использовал их в нескольких платных проектах, и я думаю, что это отличный инструмент. Вот и сказал, что я видел некоторые проблемы.

  1. Если файл .dat в папке проекта db не синхронизируется с временным экземпляром базы данных, сравнение схем даст неточные результаты. Не уверен, как это происходит, проверьте схему тщательно и удалите файл .dat (после закрытия решения), если что-то кажется неправильным.

  2. Если у вас более 20 баз данных, и они ссылаются друг на друга и используют циклические ссылки ... Это будет больно. Я не разобрался, как сделать так, чтобы он соответствовал этому сценарию. ГДР 2, кажется, дает некоторое обещание.

1 голос
/ 16 марта 2009

Мы используем проект базы данных для обеспечения контроля версий для наших сценариев SQL. Нам также нравится использовать среду Visual Studio для редактирования SQL; для некоторых наших новых разработчиков его немного легче использовать, чем для анализа запросов.

...