Как версия схемы SQL Server с использованием VS 2005? - PullRequest
2 голосов
/ 15 июня 2010

Я новичок в программировании на C # и пришел к нему совсем недавно, работая с Ruby on Rails.В RoR я привык писать схемы миграции для базы данных.Я хотел бы иметь возможность сделать нечто подобное для моих проектов на C # / SQLServer.

Существует ли такой инструмент для набора инструментов VS 2005?

Было бы разумно использовать миграции RoR с SQLСервер прямо вне VS 2005?Другими словами, я бы справился со всеми версиями схемы, используя ActiveRecord: миграция из Rails, но не более того.

Если я обрабатываю миграции вне C # и VS 2005 с помощью другого инструмента, лучше всего использовать RoR ActiveRecord: миграцияиспользовать или есть что-то, что лучше подходит?

Ответы [ 4 ]

0 голосов
/ 21 июля 2010

Попробуйте DBSourceTools. http://dbsourcetools.codeplex.com
Его открытый исходный код, специально разработанный для помощи разработчикам в управлении базами данных.

0 голосов
/ 15 июня 2010

Я доволен DBDeploy.NET для обработки версий нашей базы данных. В моем текущем проекте используется C # + SQL 2008. DBDeploy не интегрирован в Visual Studio, но я полагаю, что вы могли бы сделать это с помощью некоторых пользовательских записей внешних инструментов в IDE.

Существуют и другие инструменты, которые, безусловно, работают. Я не знаком с Ruby ActiveRecord: Миграция, но если у вас уже есть опыт использования этого конкретного инструмента, почему бы не придерживаться его? Что касается версий / миграций баз данных в Visual Studio, я считаю, что вам нужно будет обновить до версии Professional Professional Edition (дополнительные расходы на эту версию были проверены в последний раз).

Подводя итог, я бы пошел с тем, что вы знаете. Большинство бесплатных инструментов для управления версиями БД в настоящее время все еще несколько недоделаны. Если вам нужна дополнительная информация о DBDeploy.NET, вы можете прочитать о ней из оригинального проекта, из которого она была перенесена, - http://dbdeploy.com/ Также имейте в виду, что инструмент DBDeploy является кроссплатформенным (поддерживает многие системы БД , а не только SQL Server и Oracle) и с открытым исходным кодом.

0 голосов
/ 15 июня 2010

Для распространения приложения мой любимый подход на самом деле один встроенный: Контроль версий и ваша база данных .

Я использую расширенные свойства базы данных для хранения текущей развернутой на диске схемыверсия, а затем запустите внутренний массив обновления, который поддерживает соответствие между версией на диске => сценарий обновления до следующей версии.При запуске приложение выполняет шаги в массиве обновлений, пока версия на диске не совпадет с текущей версией приложения.Таким образом, обновление проходит через все промежуточные версии.Развертывание нового сайта (нового местоположения) проходит через каждую версию схемы, иногда создавая и удаляя объект, который больше не используется.Это может показаться странным, но в конце концов приложение может быть развернуто поверх любой ранее выпущенной версии.Если у клиента есть схема 3 года назад, то все забыли, что она содержит, приложение знает, как всегда обновлять ее, и это здорово.

Я предпочитаю этот подход, а не инструменты сравнения сравнения (например,Интеграция проекта VS DB), потому что она тестируема и предлагает гораздо лучший контроль над точными шагами, предпринимаемыми при любом обновлении.Инструменты Diff выполняют все виды сомнительных действий, таких как копирование таблиц и переименование, которые не работают для развертываний размером + 1 ТБ (с которыми сталкивается мое приложение).

Если ожидаемый размер данных достаточно мал (<100 Гб), я бы рассмотрел инструменты на основе diff.В таких условиях отлично работает развертывание проекта VS DB на основе <a href="http://msdn.microsoft.com/en-us/library/dd193283.aspx" rel="nofollow noreferrer"> vsdbcmd .Кроме того, если целью развертывания является только одно местоположение (т. Е. Веб-приложение, в котором есть только одна цель, веб-сайт db), то возможность обновления любой предыдущей версии теряет свою привлекательность.

0 голосов
/ 15 июня 2010

Нет встроенного способа сделать это без версии Database Edition VS Team Edition. Мы используем сценарий NANT, аналогичный этому, и датируем файлы миграции датой, аналогичной той, что делает Ruby.

http://www.bottleit.com.au/blog/post/Continuous-database-integration.aspx

...