базы данных SQL Server Versioning

голоса
288

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

Я всегда буду хотеть иметь по крайней мере некоторые данные там (как alumb упоминает: типы пользователей и администраторов). Я также часто требуется большая коллекция сгенерированных тестовых данных для измерения производительности.

Задан 01/08/2008 в 19:33
источник пользователем
На других языках...                            


29 ответов

голоса
169

Мартин Фаулер написал свою любимую статью на эту тему, http://martinfowler.com/articles/evodb.html . Я выбираю не ставить схемы отвалов под контролем версий , как alumb и другие предполагают , потому что я хочу простой способ обновить свою производственную базу.

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

Обновление базы данных Сценарии

При обновлении базы данных последовательности сценариев, которые содержат DDL, необходимый для перемещения схемы от версии N до N + 1. (Они идут в системе управления версиями.) Столик _version_history_, что-то вроде

create table VersionHistory (
    Version int primary key,
    UpgradeStart datetime not null,
    UpgradeEnd datetime
    );

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

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

Синхронизация Sandbox Разработчик

  1. Скрипт для резервного копирования, дезинфицировать и сжать базу данных производства. Выполнить это после каждого обновления до производства DB.
  2. Скрипт для восстановления (и настройки, если это необходимо) резервную копию на рабочей станции разработчика. Каждый разработчик запускает скрипт после каждого обновления для производства DB.

Протест: Мои автоматические тесты работать против схемы корректных, но пустой базы данных, поэтому этот совет не будет идеально соответствовать вашим потребностям.

Ответил 02/08/2008 d 18:33
источник пользователем

голоса
42

Red Gate SQL в сравнение продукт не только позволяет делать сравнения на уровне объектов, а также генерировать изменения сценариев из этого, но она также позволяет экспортировать объекты базы данных в иерархии папок, организованной по типу объекта, с одной [имя_объекта] .sql создания скрипт для каждого объекта в этих каталогах. Иерархия объектов типа, как это:

\ Функции
\ Security
\ Security \ Роли
\ Security \ Schemas
\ Security \ Users
\ хранимые процедуры
\ Таблицы

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

Ответил 26/08/2008 d 08:23
источник пользователем

голоса
38

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

Если вам нужно только сохранить структуру базы данных, а не данные вы можете экспортировать базу данных в запросах SQL. (В Enterprise Manager: Нажмите правой кнопкой мыши на базе данных -> Generate SQL скрипт я рекомендую установить «создать один файл для каждого объекта» на вкладке параметров.) Вы можете совершать эти текстовые файлы в SVN и использовать дифф и лесозаготовок функций СВН в.

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

Если вам нужно сохранить все данные , а также, я рекомендую держать резервную копию базы данных и с использованием Редгейта ( http://www.red-gate.com/ ) продукции , чтобы сделать сравнение. Они не дешево, но они стоят каждый пенни.

Ответил 01/08/2008 d 20:28
источник пользователем

голоса
37

Во-первых, вы должны выбрать систему управления версиями, которая подходит именно вам:

  • Централизованная система управления версиями - стандартная система, в которой пользователи проверить / проверить в до / после работы с файлами, а файлы хранятся в одном центральном сервере

  • Распределенная система управления версиями - это система , в которой хранилище быть клонированы, и каждый клон на самом деле полное резервное копирование хранилища, так что, если то любой клонированный хранилище может быть использован любой сервер выходит из строя, чтобы восстановить его после выбора правильной системы для ваших нужд , вам нужно настроить репозиторий , который является основой любой системы контроля версий Все это объясняется в следующей статье: http://solutioncenter.apexsql.com/sql-server-source-control-part-i-understanding -source-контроль-основа /

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

  • SQL Server Management Studio через провайдера MSSCCI,

  • Visual Studio и SQL Server Tools Data

  • Инструмент третьей стороны управление ApexSQL Источника
Ответил 24/06/2015 d 10:36
источник пользователем

голоса
22

Здесь у Красных ворот мы предлагаем инструмент, SQL Source Control , которая использует SQL Compare технологию , чтобы связать свою базу данных с хранилищем TFS или SVN. Этот инструмент интегрируется в SSMS и позволяет работать , как обычно, за исключением того, что теперь позволяет совершать объекты.

Для подхода миграции на основе (больше подходят для автоматического развертывания), мы предлагаем ReadyRoll , который создает и управляет набором дополнительных сценариев в качестве проекта Visual Studio.

В SQL Source Control можно указать статические таблицы данных. Они хранятся в системе управления версиями, как INSERT IGNORE заявления.

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

Ответил 01/07/2010 d 10:10
источник пользователем

голоса
20

Вы можете посмотреть на LiquiBase ( http://www.liquibase.org/ ). Даже если вы не используете сам инструмент он обрабатывает концепцию управления изменениями баз данных или рефакторинг довольно хорошо.

Ответил 16/09/2008 d 19:16
источник пользователем

голоса
17

+1 для всех, кто рекомендуемых в RedGate инструменты, с дополнительной рекомендацией и предостережением.

SqlCompare также прилично документированный API: так что вы можете, например, написать приложение консоли, которая синхронизирует ваши исходные контролируемые сценарии папку с базой данных тестирования интеграции CI на оформленном, так что, когда кто-то проверяет в изменении в схему из их папок скриптов он автоматически развертывается вместе с изменением соответствия кода приложения. Это помогает сократить разрыв с разработчиками, которые забывчивый о распространении изменений в их локальном дб до общего развития БД (около половины из нас, я думаю :)).

Протест в том, что с помощью скриптовых решения или иным образом, то RedGate инструменты являются достаточно гладкими, что легко забыть о реалиях SQL, лежащих в основе абстракции. Если переименовать все столбцы в таблице, SqlCompare не имеет возможностей сопоставить старые колонки к новым колонкам и будет отбрасывать все данные в таблице. Он будет генерировать предупреждения, но я видел, что люди нажмите прошлое. Там есть общая точка здесь стоит сделать, я думаю, что вы можете только автоматизировать DB версии и обновление до сих пор - абстракции очень неплотно.

Ответил 15/10/2008 d 10:44
источник пользователем

голоса
14

С VS 2010, использовать проект базы данных.

  1. Сценарий из вашей базы данных
  2. Внести изменения в скриптах или непосредственно на вашем сервере БД
  3. Синхронизация с использованием данных> Сравнение схем

Делает идеальное решение DB версий, и делает синхронизацию БД это ветер.

Ответил 25/02/2011 d 21:18
источник пользователем

голоса
14

Мы используем DBGhost для управления нашей базы данных SQL. Затем вы кладете свои скрипты , чтобы построить новую базу данных в систему управления версиями, и это будет либо создать новую базу данных, или обновить любую существующую базу данных для схемы в системе управления версиями. Таким образом , вам не придется беспокоиться о создании сценариев изменения (хотя вы все еще можете сделать это, если, например , вы хотите изменить тип данных столбца и нужно преобразовать данные).

Ответил 07/08/2008 d 22:12
источник пользователем

голоса
12

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

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

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

Ответил 24/09/2008 d 07:11
источник пользователем

голоса
11

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

Я в настоящее время использую DbUp , и это работает хорошо.

Ответил 06/08/2008 d 23:51
источник пользователем

голоса
10

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

Миграции программно определить преобразования базы данных с помощью DSL на Ruby; каждое преобразование может быть применен или (обычно) откат, что позволяет перейти к другой версии вашей БД схемы в любой данный момент времени. Файл, определяющий эти преобразования могут быть проверены в системе управления версиями, как и любой другой фрагмент исходного кода.

Поскольку миграция являются частью ActiveRecord , они , как правило , находят применение в полный стек Rails приложений; Однако, вы можете использовать ActiveRecord независимо от Rails с минимальными усилиями. Смотрите здесь для более детального лечения с использованием миграции AR за пределами Rails.

Ответил 02/08/2008 d 18:54
источник пользователем

голоса
9

Каждая база данных должна находиться под контролем исходного кода. Чего не хватает , это инструмент для автоматического сценария все объекты базы данных - и «Данные конфигурации» - в файл, который затем может быть добавлен к любой системе управления версиями. Если вы используете SQL Server, то мое решение здесь: http://dbsourcetools.codeplex.com/ . Повеселись. - Натан.

Ответил 07/07/2009 d 13:58
источник пользователем

голоса
8

Это просто.

  1. Когда базовый проект готов, то вы должны создать полный сценарий базы данных. Этот сценарий поручен к SVN. Это первый вариант.

  2. После этого все разработчики создают сценарии изменения (ALTER ..., новые таблицы, sprocs и т.д.).

  3. Когда вам нужна текущая версия, то вы должны выполнить все новые сценарии изменения.

  4. Когда приложение будет отпущена в производство, то вы вернетесь к 1 (но тогда это будет последовательная версия, конечно).

Nant поможет вам выполнять эти сценарии изменения. :)

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

Ответил 16/05/2009 d 12:31
источник пользователем

голоса
7

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

Настройка: Создание таблицы в каждой базе данных вы хотите проверить пошагово для хранения информации о версии от последней проверки его (пустой при первом запуске). Очистить эту таблицу , если вы хотите повторно сканировать всю структуру данных.

IF ISNULL(OBJECT_ID('last_run_sysversions'), 0) <> 0 DROP TABLE last_run_sysversions
CREATE TABLE last_run_sysversions (
    name varchar(128), 
    id int, base_schema_ver int,
    schema_ver int,
    type char(2)
)

Режим нормальной работы: Вы можете взять результаты от этого SQL, и генерировать SQL сценарии для только те , которые вам интересны, и поместить их в систему управления версиями вашего выбора.

IF ISNULL(OBJECT_ID('tempdb.dbo.#tmp'), 0) <> 0 DROP TABLE #tmp
CREATE TABLE #tmp (
    name varchar(128), 
    id int, base_schema_ver int,
    schema_ver int,
    type char(2)
)

SET NOCOUNT ON

-- Insert the values from the end of the last run into #tmp
INSERT IGNORE  #tmp (name, id, base_schema_ver, schema_ver, type) 
SELECT name, id, base_schema_ver, schema_ver, type FROM last_run_sysversions

DELETE last_run_sysversions
INSERT IGNORE  last_run_sysversions (name, id, base_schema_ver, schema_ver, type)
SELECT name, id, base_schema_ver, schema_ver, type FROM sysobjects

-- This next bit lists all differences to scripts.
SET NOCOUNT OFF

--Renamed.
SELECT 'renamed' AS ChangeType, t.name, o.name AS extra_info, 1 AS Priority
FROM sysobjects o INNER JOIN #tmp t ON o.id = t.id
WHERE o.name <> t.name /*COLLATE*/
AND o.type IN ('TR', 'P' ,'U' ,'V')
UNION 

--Changed (using alter)
SELECT 'changed' AS ChangeType, o.name /*COLLATE*/, 
       'altered' AS extra_info, 2 AS Priority
FROM sysobjects o INNER JOIN #tmp t ON o.id = t.id 
WHERE (
   o.base_schema_ver <> t.base_schema_ver
OR o.schema_ver      <> t.schema_ver
)
AND  o.type IN ('TR', 'P' ,'U' ,'V')
AND  o.name NOT IN ( SELECT oi.name 
         FROM sysobjects oi INNER JOIN #tmp ti ON oi.id = ti.id
         WHERE oi.name <> ti.name /*COLLATE*/
         AND oi.type IN ('TR', 'P' ,'U' ,'V')) 
UNION

--Changed (actually dropped and recreated [but not renamed])
SELECT 'changed' AS ChangeType, t.name, 'dropped' AS extra_info, 2 AS Priority
FROM #tmp t
WHERE    t.name IN ( SELECT ti.name /*COLLATE*/ FROM #tmp ti
         WHERE NOT EXISTS (SELECT * FROM sysobjects oi
                           WHERE oi.id = ti.id))
AND  t.name IN ( SELECT oi.name /*COLLATE*/ FROM sysobjects oi
         WHERE NOT EXISTS (SELECT * FROM #tmp ti
                           WHERE oi.id = ti.id)
         AND   oi.type  IN ('TR', 'P' ,'U' ,'V'))
UNION

--Deleted
SELECT 'deleted' AS ChangeType, t.name, '' AS extra_info, 0 AS Priority
FROM #tmp t
WHERE NOT EXISTS (SELECT * FROM sysobjects o
                  WHERE o.id = t.id)
AND t.name NOT IN (  SELECT oi.name /*COLLATE*/ FROM sysobjects oi
         WHERE NOT EXISTS (SELECT * FROM #tmp ti
                           WHERE oi.id = ti.id)
         AND   oi.type  IN ('TR', 'P' ,'U' ,'V'))
UNION

--Added
SELECT 'added' AS ChangeType, o.name /*COLLATE*/, '' AS extra_info, 4 AS Priority
FROM sysobjects o
WHERE NOT EXISTS (SELECT * FROM #tmp t
                  WHERE o.id = t.id)
AND      o.type  IN ('TR', 'P' ,'U' ,'V')
AND  o.name NOT IN ( SELECT ti.name /*COLLATE*/ FROM #tmp ti
         WHERE NOT EXISTS (SELECT * FROM sysobjects oi
                           WHERE oi.id = ti.id))
ORDER BY Priority ASC

Примечание: Если вы используете нестандартные сортировки в любом из баз данных, вам нужно будет заменить /* COLLATE */с сортировкой базы данных. т.е.COLLATE Latin1_General_CI_AI

Ответил 24/09/2008 d 13:53
источник пользователем

голоса
7

Потому что наше приложение должно работать по несколько РСУБДУ, мы сохраняем наше определение схемы в системе управления версиями с использованием базы данных нейтрального Torque формата (XML). Мы также контроль версий справочных данных для нашей базы данных в формате XML следующим образом (где «Связь» является одним из справочных таблиц):

  <Relationship RelationshipID="1" InternalName="Manager"/>
  <Relationship RelationshipID="2" InternalName="Delegate"/>
  etc.

Затем мы используем доморощенных инструменты для создания обновления схемы и справочные данные обновлений скриптов, которые необходимы для перехода от версии X баз данных до версии X + 1.

Ответил 24/09/2008 d 06:49
источник пользователем

голоса
7

Если у вас есть небольшая база данных , и вы хотите версии всей вещи, эта партия сценарий может помочь. Он отрывается, сжимает, и проверяет MDF файл базы данных MSSQL , чтобы Subversion.

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

Ответил 07/08/2008 d 22:21
источник пользователем

голоса
6

Я написал это приложение некоторое время назад, http://sqlschemasourcectrl.codeplex.com/ который будет сканировать ваш MSFT SQL децибел так часто , как вы хотите , и автоматически сбрасывать свои объекты (таблицы, представления, проки, функции, настройки SQL) в SVN. Работает как шарм. Я использую его с Unfuddle (который позволяет мне получать оповещения о возвратах)

Ответил 23/09/2010 d 03:35
источник пользователем

голоса
6

У нас была необходимость версия нашей базы данных SQL после того, как мы мигрировали на платформе x64 и наша старая версия порвал с миграцией. Мы написали C # приложение, которое используется Sqldmo наметить все объекты SQL в папку:

                корень
                    Имя сервера
                       DatabaseName
                          Объекты схемы
                             База данных Триггеры *
                                .ddltrigger.sql
                             функции
                                ..function.sql
                             Безопасность
                                Роли
                                   Роли приложений
                                      .approle.sql
                                   Роли базы данных
                                      .role.sql
                                Schemas *
                                   .schema.sql
                                пользователей
                                   .user.sql
                             Место хранения
                                Полный текст Каталоги *
                                   .fulltext.sql
                             Хранимые процедуры
                                ..proc.sql
                             Синонимы *
                                .synonym.sql
                             таблицы
                                ..table.sql
                                Ограничения
                                   ... chkconst.sql
                                   ... defconst.sql
                                Индексы
                                   ... index.sql
                                Ключи
                                   ... fkey.sql
                                   ... pkey.sql
                                   ... ukey.sql
                                Триггеры
                                   ... trigger.sql
                             Типы
                                Определяемые пользователем типы данных
                                   ..uddt.sql
                                XML-схема Коллекция *
                                   ..xmlschema.sql
                             Просмотры
                                ..view.sql
                                Индексы
                                   ... index.sql
                                Триггеры
                                   ... trigger.sql

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

Ответил 09/10/2008 d 15:54
источник пользователем

голоса
6

Мы не храним схемы базы данных, мы сохраняем изменения в базу данных. Что мы делаем это сохранить изменения схемы так, что мы строим сценарий изменения для любой версии базы данных и применить его к базам данных наших клиентов. Я написал утилиту приложение базы данных, которая получает распределенную с нашим основным приложением, которое может читать этот сценарий и знать, какие должны быть применены обновления. Она также имеет достаточно СМАРТС, чтобы освежить представления и хранимые процедуры по мере необходимости.

Ответил 07/08/2008 d 00:00
источник пользователем

голоса
5

Я согласен с ESV ответ и по этой причине я точного начала немного проекта некоторое время назад, чтобы помочь сохранить обновления базы данных в очень простой файл, который затем можно сохранить длинную сторону из исходного кода. Это позволяет легко обновления для разработчиков, а также UAT и производства. Инструмент работает на но Sql Server и MySql.

Некоторые особенности проекта:

  • Позволяет изменения схемы
  • Позволяет население значение дерева
  • Позволяет отдельные вставки тестовых данных для например. UAT
  • Позволяет возможность для отката (не автоматизирован)
  • Поддерживает поддержку SQL-сервера и Mysql
  • Имеет возможность импортировать существующую базу данных в системе управления версиями с помощью одной простой команды (SQL Server только ... до сих пор работает на MySQL)

Код размещается на Google Code. Пожалуйста, проверьте код Google для более определенной информации

http://code.google.com/p/databaseversioncontrol/

Ответил 24/02/2011 d 19:28
источник пользователем

голоса
5

Мы только начали использовать Team Foundation Server. Если база данных среднего размера, то Visual Studio имеет некоторые приятные интеграции с использованием встроенными в сравнении, сравнение данных, рефакторинг базы данных инструментов, системы тестирования базы данных, и даже средство генерации данных.

Но эта модель не подходит очень большие или третьи баз данных сторонних разработчиков (которые шифруют объекты) очень хорошо. Итак, что мы сделали, чтобы сохранить только наши настраиваемые объекты. Визуальный сервер фонд Студия / Команда работает очень хорошо для этого.

TFS главный базы данных арку. блог

сайт MS TFS

Ответил 22/08/2008 d 18:13
источник пользователем

голоса
5

Типичное решение для дампа базы данных по мере необходимости и резервное копирование этих файлов.

В зависимости от используемой платформы разработки, может быть OpenSource плагины доступны. Подвижной свой собственный код, чтобы сделать это, как правило, довольно тривиально.

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

Ответил 03/08/2008 d 02:49
источник пользователем

голоса
4

Я также использую версию в базе данных, хранящихся через базу данных расширенных свойств семейства процедур. Мое приложение имеет сценарии для каждого шага версии (то есть. Перейти от 1,1 до 1,2). При развертывании, он смотрит на текущую версию, а затем запускает сценарии один за другим, пока не достигнет последней версии приложения. Там нет никакого сценария, который имеет прямой «окончательный» вариант, даже развернуть на чистую БД делает развернуть через ряд шагов по модернизации.

Теперь то, что я хотел бы добавить, что я видел два дня назад презентации на кампусе MS о новом и наступающих VS DB изданиях. Презентация была сфокусирована именно на эту тему, и я был взорван из воды. Вы должны обязательно проверить его, новые объекты сосредоточены на сохранение определения схемы в сценариях T-SQL (СОЗДАЕТ), среду выполнения дельты двигателя для сравнения развертывания схемы с определенной схемой и делать дельту исказит и интеграцию с интеграцией исходного кода, до и в том числе MsBuild непрерывной интеграции для автоматической сборки капель. Падение будет содержать новый тип файла, то .dbschema файлы, которые могут быть приняты к месту развертывания и инструменту командной строки может сделать фактические «дельты» и запустить развертывание. У меня есть запись в блоге на эту тему со ссылками на загрузки VSDE, вы должны проверить их:http://rusanu.com/2009/05/15/version-control-and-your-database/

Ответил 15/05/2009 d 20:26
источник пользователем

голоса
4

Некоторое время назад я нашел модуль барельеф VB , который используется DMO и VSS объекты , чтобы получить весь дб сценарий выключен и в VSS. Я включил его в VB Script и разместил его здесь . Вы можете легко вынуть звонки VSS и использовать материал DMO , чтобы создать все сценарии, а затем вызовите SVN из того же пакетного файла , который вызывает VBScript , чтобы проверить их?

Dave J

Ответил 16/09/2008 d 18:55
источник пользователем

голоса
3

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

Ответил 23/06/2015 d 11:26
источник пользователем

голоса
2

Проверьте DBGhost http://www.innovartis.co.uk/ . Я использовал в автоматическом режиме в течение 2 -х лет, и он прекрасно работает. Это позволяет нашей БД строит случиться так же, как Java или C сборка происходит, за исключением базы данных. Если вы понимаете, о чем я.

Ответил 02/11/2009 d 23:17
источник пользователем

голоса
2

По моему опыту, решение имеет два аспекта:

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

  2. Вы должны обрабатывать обновления баз данных в клиентах сайтах.

Для того, чтобы справиться с # 1 вам нужен сильный инструмент базы данных сравнения / слияния. Лучший инструмент должен быть в состоянии выполнить автоматическое слияние как можно больше, позволяя вам решить необработанные конфликты вручную.

Идеальный инструмент должен обрабатывать слияния операций с использованием алгоритма слияния 3-полосным, который приносит во внимание изменения, которые были сделаны в ихних базах данных и базах данных MINE, по отношению к базе данных БАЗЫ.

Я написал коммерческий инструмент , который обеспечивает ручную поддержку слияния для SQLite база данных , и я в настоящее время добавляю поддержку 3-полосное слияния алгоритма для SQLite. Проверьте это в http://www.sqlitecompare.com

Для того, чтобы справиться с # 2 вам потребуется обновление базы на месте.

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

Посмотрите мою статью на эту тему в http://www.codeproject.com/KB/database/sqlite_upgrade.aspx , чтобы получить общее представление о том , что я говорю.

Удачи

Liron Леви

Ответил 06/08/2009 d 11:28
источник пользователем

голоса
1

Я хотел бы предложить использовать инструменты сравнения импровизировать систему управления версиями для вашей базы данных. Хорошей альтернативой являются XSQL Сравнение схем и сравнение XSQL данных .

Теперь, если ваша цель состоит в том, чтобы иметь только Схему базы данных под управлением версиями, вы можете просто использовать XSQL сравнение схем для создания XSQL снимков схемы, и добавить эти файлы в системе управления версиями. Чем, чтобы вернуться или обновление к конкретной версии просто сравнить текущую версию базы данных с снимком для версии назначения.

Увы, если вы хотите, чтобы данные под контролем версий, а также, вы можете использовать XSQL Data Compare для создания изменения сценариев для вас базы данных и добавить .SQL файлов в системе управления версиями. Затем можно выполнить эти сценарии для возврата / обновлений для любой версии, которую вы хотите. Имейте в виду, что для функциональности «Возвратить» вы должны генерировать сценарии изменения, которые при выполнении будет делать версии 3 так же, как и версии 2 для функциональности «обновление», вам нужно сгенерировать изменения сценариев, которые делают противоположное.

И, наконец, с некоторыми базовыми навыками программирования партии вы можете автоматизировать весь процесс, используя версию командной строки XSQL схемы сравнение и сравнение данных XSQL

Отказ от ответственности: Я связан с XSQL.

Ответил 10/01/2017 d 16:16
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more