sql-server - удаленному - создание локального сервера sql server




Развертывание баз данных SQL Server из Test to Live (10)

Интересно, как вы, ребята, управляете развертыванием базы данных между двумя SQL-серверами, в частности с SQL Server 2005. Теперь есть разработка и живая. Поскольку это должно быть частью buildscript (стандартная пакетная версия Windows, даже с текущей сложностью этих сценариев, я могу переключиться на PowerShell или так позже), Enterprise Manager / Management Studio Express не учитывается.

Вы просто скопировали файл .mdf и приложите его? Я всегда немного осторожен при работе с бинарными данными, так как это кажется проблемой совместимости (даже несмотря на то, что разработка и live должны всегда работать с той же версией сервера).

Или - учитывая отсутствие «EXPLAIN CREATE TABLE» в T-SQL - выполняете ли вы что-то, что экспортирует существующую базу данных в SQL-скрипты, которые вы можете запускать на целевом сервере? Если да, есть ли инструмент, который может автоматически сбрасывать заданную базу данных в SQL-запросы и запускается из командной строки? (Опять же, Enterprise Manager / Management Studio Express не учитывается).

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

Теперь я слышу много замечательных материалов о продуктах Red Gate , но для проектов с хобби цена немного крутая.

Итак, что вы используете для автоматического развертывания баз данных SQL Server из Test to Live?


В настоящее время я работаю с тобой. Не только развертывание баз данных SQL Server из теста, чтобы жить, но также включает весь процесс из Local -> Integration -> Test -> Production. Итак, что может сделать меня легко каждый день, я выполняю задачу NAnt с помощью Red-Gate SQL Compare . Я не работаю в RedGate, но я должен сказать, что это хороший выбор.


Для моих проектов я чередую между SQL Compare из REd Gate и мастером публикации базы данных из Microsoft, который вы можете скачать бесплатно здесь .

Мастер не такой гладкий, как SQL Compare или SQL Data Compare, но это делает трюк. Одна из проблем заключается в том, что сценарии, которые он создает, могут нуждаться в некотором перераспределении и / или редактировании для потока одним выстрелом.

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


Как и Роб Аллен, я использую SQL Compare / Data Compare by Redgate. Я также использую мастер публикации базы данных Microsoft. У меня также есть консольное приложение, которое я написал на C #, которое берет sql-скрипт и запускает его на сервере. Таким образом, вы можете запускать большие скрипты с командами GO в нем из командной строки или в пакетном скрипте.

Я использую библиотеки Microsoft.SqlServer.BatchParser.dll и Microsoft.SqlServer.ConnectionInfo.dll в консольном приложении.


Не забудьте решение Microsoft проблемы: Visual Studio 2008 Database Edition . Включает инструменты для развертывания изменений в базах данных, создания различий между базами данных для изменения схемы и / или данных, модульных тестов, генерации тестовых данных.

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


Я делаю все свое создание базы данных как DDL, а затем переношу этот DDL в класс поддержки схемы. Я могу делать разные вещи, чтобы создать DDL, но в принципе я использую весь код в коде. Это также означает, что если вам нужно делать не DDL-вещи, которые плохо сопоставляются с SQL, вы можете написать процессуальную логику и запустить ее между комками DDL / DML.

Затем у моих dbs есть таблица, которая определяет текущую версию, чтобы можно было кодировать относительно простой набор тестов:

  1. Существует ли БД? Если не создать его.
  2. Является ли БД текущей версией? Если нет, то запустите методы, последовательно обновляющие схему (вы можете попросить пользователя подтвердить и - в идеале - сделать резервные копии на этом этапе).

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

Преимущество? Хорошо, что я очень уверен в том, что схема для приложений, использующих эту методологию, согласована во всех экземплярах этих приложений. Это не идеальный вариант, есть проблемы, но он работает ...

Есть некоторые проблемы при разработке в командной среде, но это более или менее точно!

Murph


Я использую механизм миграции Subsonic, поэтому у меня просто есть dll с классами в квадратном порядке, у которых есть 2 метода, вверх и вниз. Существует непрерывный скрипт объединения / сборки скрипта в nant, так что я могу автоматизировать обновление моей базы данных.

Это не лучший трюк в мире, но он бьет писать DDL.


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

Все, что вы делаете в пользовательском интерфейсе, не будет переводиться (особенно для изменений ... не для первых развертываний), и в конечном итоге потребуются такие инструменты, как то, что предлагает Redgate.


Я согласен с тем, чтобы держать все в исходном управлении и вручную создавать сценарии всех изменений. Изменения в схеме для одной версии вписываются в файл сценария, созданный специально для этой версии. Все сохраненные procs, views и т. Д. Должны поступать в отдельные файлы и обрабатываться так же, как .cs или .aspx, насколько это возможно. Я использую скрипт powershell для создания одного большого файла .sql для обновления информации о программируемости.

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

Я также узнал, что индексы нужно обрабатывать так же, как файлы кода, и вводить их в исходный контроль.

И у вас обязательно должно быть более двух баз данных - dev и live. У вас должна быть база данных dev, которую каждый использует для ежедневных задач dev. Затем промежуточная база данных, которая имитирует производство и используется для проведения тестирования интеграции. Тогда, может быть, полная последняя копия производства (восстановлена ​​из полной резервной копии), если это возможно, поэтому ваш последний раунд тестирования установки идет вразрез с чем-то близким к реальному, насколько это возможно.


RedGate SqlCompare - это способ, по моему мнению. Мы развертываем развертывание БД на регулярной основе, и поскольку я начал использовать этот инструмент, я никогда не оглядывался назад. Очень интуитивно понятный интерфейс и экономит много времени в конце.

Версия Pro также позаботится о создании сценариев для интеграции с источником.


Если у вас есть компания, покупающая ее, у Toad от Quest Software встроена такая функциональность управления. Это в основном операция с двумя нажатиями для сравнения двух схем и генерации сценария синхронизации от одного к другому.

У них есть выпуски для большинства популярных баз данных, в том числе, конечно, Sql Server.





release-management