Развертывание баз данных SQL Server от теста для проживания

У CSS3 есть легкое решение вашей проблемы. Использование:

background-color:rgba(0,255,0,0.5);

Здесь rgba означает красный, зеленый, синий и альфа-значение. Зеленое значение получается из-за 255, а половина прозрачности получается по 0,5 альфа-значения.

26
задан Matt 25 November 2014 в 20:58
поделиться

14 ответов

Я взял к кодированию руки, весь мой DDL (создает/изменяет/удаляет) операторы, добавляя их к моему .sln как текстовые файлы, и с помощью нормального управления версиями (использующий подрывную деятельность, но любое управление версиями должно работать). Таким образом, я не только извлекаю пользу из управления версиями, но и обновляющий живой от dev/stage тот же процесс для кода и базы данных - теги, ответвления и так далее работают все равно.

Иначе, я соглашаюсь, что redgate является дорогим, если у Вас нет компании, покупая его для Вас. Если можно заставить компанию покупать его для Вас, хотя, это действительно стоит того!

19
ответ дан Karl Seguin 28 November 2019 в 06:39
поделиться

Я в настоящее время работаю то же самое Вам. Не только развертывая базы данных SQL Server от теста, чтобы жить, но также и включать целый процесс от Локального-> Интеграция-> Тест-> Производство. Таким образом, что может сделать меня, легко каждый день, я делаю , задача NAnt с SQL Красного Логического элемента Выдерживает сравнение . Я не работаю на RedGate, но я должен сказать, что это - хороший выбор.

1
ответ дан Vorleak Chy 28 November 2019 в 06:39
поделиться

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

Мои dbs тогда имеют таблицу, которая определяет текущую версию, таким образом, можно кодировать относительно простой набор тестов:

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

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

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

существуют некоторые проблемы при разработке в среде команды, но это - более или менее данный так или иначе!

Murph

1
ответ дан Murph 28 November 2019 в 06:39
поделиться

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

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

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

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

1
ответ дан Eric Z Beard 28 November 2019 в 06:39
поделиться

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

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

2
ответ дан kristof 28 November 2019 в 06:39
поделиться

Используя SMO/DMO, не слишком трудно генерировать сценарий Вашей схемы. Данные являются немного большим количеством забавы, но все еще выполнимый.

В целом, я беру "Сценарий, к которому Это" приближается, но Вы могли бы хотеть рассмотреть что-то вдоль этих строк:

  • Различают Разработку и Подготовку, такую, что можно Разработать с подмножеством данных... это, я создал бы инструмент только к выпадающему некоторые производственные данные или генерировал бы поддельные данные, где безопасность затронута.
  • Для разработки команды, каждое изменение в базе данных должно будет быть скоординировано среди Ваших членов команды. Схема и изменения данных могут быть смешаны, но единственный сценарий должен активировать данную опцию. Как только все Ваши функции готовы, Вы связываете их в единственном файле SQL и выполняете это против восстановления производства.
  • , Как только Ваша подготовка очистила принятие, Вы выполняете единственный файл SQL снова на производственной машине.

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

2
ответ дан Brett Veenstra 28 November 2019 в 06:39
поделиться

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

не лучшая вещь в мире, но это бьет DDL записи.

2
ответ дан DevelopingChris 28 November 2019 в 06:39
поделиться

Если у Вас есть компания, покупая его, у Жабы от Quest Software есть этот вид встроенной функциональности управления. Это - в основном операция с двумя щелчками, чтобы сравнить две схемы и генерировать синхронизирующий сценарий от одного до другого.

у Них есть выпуски для большинства популярных баз данных, включая, конечно, SQL-сервер.

2
ответ дан Mark Harrison 28 November 2019 в 06:39
поделиться

Я работаю тот же способ, которым Karl делает путем хранения всех моих сценариев SQL для того, чтобы создать и изменить таблицы в текстовом файле, который я сохраняю в управлении исходным кодом. На самом деле, для предотвращения проблемы необходимости иметь сценарий исследуют живую базу данных для определения то, что ИЗМЕНЯЕТСЯ для выполнения, я обычно работаю как это:

  • На первой версии, я помещаю все во время тестирования в один сценарий SQL и рассматриваю все таблицы как СОЗДАВАНИЕ. Это означает, что я заканчиваю тем, что отбросил и повторно добавил таблицы много во время тестирования, но это не грандиозное предприятие рано в проект (так как я обычно взламываю данные, которые я использую в той точке так или иначе).
  • На всех последующих версиях, я делаю две вещи: Я делаю новый текстовый файл для содержания сценариев SQL обновления, которые содержат просто ИЗМЕНЕНИЕ для той версии. И я вношу изменения в оригинал, создаю новый сценарий базы данных также. Таким образом, обновление просто выполняет сценарий обновления, но если мы должны воссоздать DB, мы не должны выполнять 100 сценариев для получения там.
  • В зависимости от того, как я развертываю изменения DB, я буду также обычно помещать таблицу версии в DB, который содержит версию DB. Затем вместо того, чтобы принять любые человеческие решения, о которых сценариях работать, безотносительно кода у меня есть выполнение создать/обновить сценариев, использует версию для определения, что работать.

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

3
ответ дан saalon 28 November 2019 в 06:39
поделиться

Как Rob Allen, я использую SQL, Выдерживают сравнение / Данные Выдерживают сравнение Redgate. Я также использую мастер Печати по базе данных Microsoft. У меня также есть консольное приложение, которое я записал в C#, который берет sql сценарий и выполняет его на сервере. Таким образом, можно выполнить большие сценарии с командами 'ДВИЖЕНИЯ' в нем из командной строки или в сценарии пакетной обработки.

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

5
ответ дан Shawn 28 November 2019 в 06:39
поделиться

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

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

7
ответ дан Craig 28 November 2019 в 06:39
поделиться

Для моих проектов я чередуюсь между SQL, Выдерживают сравнение от КРАСНОГО Логического элемента и Мастера Печати по базе данных от Microsoft, которую можно загрузить бесплатно здесь .

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

На стороне, это может переместить Вашу схему и данные, которые не плохи для бесплатного инструмента.

13
ответ дан Rob Allen 28 November 2019 в 06:39
поделиться

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

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

2
ответ дан Pete 28 November 2019 в 06:39
поделиться

Я также поддерживаю скрипты для всех моих объектов и данных. Для развертывания я написал эту бесплатную утилиту - http://www.sqldart.com. Она позволяет изменять порядок файлов скриптов и запускает их в рамках одной транзакции.

2
ответ дан 28 November 2019 в 06:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: