Что вы пытаетесь достичь здесь? Вы пытаетесь предупредить людей об изменениях или создаете контрольный журнал того, кто что изменил и когда? Что-то еще целиком?
ScottCher
@Scott - По сути, чтобы иметь возможность создавать почти как контрольный журнал для других разработчиков - мы знаем, что у нас есть самая современная схема разработки, и что тестовые и живые сайты можно легко проверить, чтобы увидеть, какую схему они используют.
Тоби
1
Это похоже на вопрос, который я только что опубликовал, но я думаю, что они достаточно различны, чтобы ответить на них оба. Dba.stackexchange.com/questions/64/…
Бет Уайтзел
1
@BitOff - Я согласен, и я думаю, что мой ответ на вопрос, на который вы ссылались, также стоит здесь. Использование таких инструментов, как PowerDesigner или ERWin, может помочь в управлении версией структуры базы данных - если база данных смоделирована внешне, и все изменения планируются с помощью модели, вы можете лучше контролировать и распространять эти изменения для проверки.
Он называется schema_version (или миграцией, или чем угодно) и его целью является отслеживание структурных изменений или изменений данных в базе данных. Возможная структура (пример в MySQL):
вставить в значения schema_version ( key, extra) ('001', 'версия схемы');
Независимо от того, добавляете ли вы эту таблицу с самого начала проекта или сразу после развертывания первой версии на промежуточном или производственном сервере, решать вам.
Всякий раз, когда вам нужно выполнить сценарий SQL, чтобы изменить структуру базы данных или выполнить миграцию данных, вы должны также добавить строку в эту таблицу. И сделайте это с помощью оператора вставки в начале или конце этого скрипта (который фиксируется в хранилище кода проекта).
@ Дэвид - Это почти вопрос сам по себе, но не могли бы вы очень быстро объяснить, как таблица может дать обратную связь вашей VCS? Просто с ручным сбросом?
Тоби
@Toby - при развертывании сценарии были помещены в SVN, и разработчик предоставил номер SVN rev или JIRA bug - мы (dbas) вставили их быстрые заметки и rev # в эту таблицу. Однако, чтобы связать его вместе, мы создали веб-страницу, указывающую на эту таблицу с гиперссылкой на JIRA.
Дэвид Холл
Да. По сути, OP имеет его задом наперед - вы используете сценарии развертывания, которые вы версии, вы не работаете из дельты базы данных. В любом случае они работают только в вырожденных (упрощенных) случаях - вам может потребоваться выполнить многошаговое преобразование для обновления схемы, которую инструмент не может сгенерировать в обратном направлении. Но сценарии развертывания могут справиться с этим.
TomTom
23
Я думаю, что лучший способ - это создать базу данных как часть процесса сборки . Держите все скрипты в системе контроля версий вместе с остальным кодом, и каждый отвечает за свою среду.
Еще один такой вопрос привел меня к Migrator Dot Net, который я собираюсь начать исследовать в свободное время. Это выглядит как хороший метод, но это может быть больше временных / накладных инвестиций, чем вы готовы сделать.
«Редакция базы данных» Visual Studio раньше была отдельным продуктом, но теперь включена в редакции, включая Team Server. Лично я предпочитаю инструмент RedGate (SQL Compare) для их синхронизации.
Tangurena
12
eiefai уже упомянул таблицу, которая должна существовать во всех проектах с базой данных . Это отличный пост в блоге, но IMO это лишь часть пути к работающему решению для контроля версий баз данных. Я думаю, что любая попытка «ответить» на этот вопрос в реальном мире должна учитывать некоторую другую информацию о VCS и базах данных:
Я думаю, что есть несколько разных подходов к этому вопросу. Я полагаю, что угол «сначала инструмент» будет меняться в зависимости от платформы и личных предпочтений. Например: я использую проект базы данных в MS Visual Studio, но я не уверен, что это отличное решение для MySQL. Я также знаю людей, которые продают свои любимые инструменты от Redgate, Erwin, Embarcadero и т. Д.
В этом вопросе также есть ракурс «сначала процесс», который (надеюсь) будет вновь рассмотрен на этом сайте в последующих вопросах. Ключевыми моментами в этом процессе являются получение схемы под контролем исходного кода и управление изменениями, так что вы можете применить изменения схемы от версии "x" к версии "y" в значительной степени по требованию.
Окончательный ответ на эту тему в конечном итоге будет выглядеть как книга, поэтому, вероятно, стоит начать с ссылки на нее: Redgate недавно опубликовал бесплатную книгу под названием « Руководство Red Gate по разработке на основе SQL Server », и пока есть там много дискуссий, это очень хорошее место для дебатов, ИМО. Вопреки названию, большая часть материала в этой книге достаточно общая, чтобы ее можно было применить к любой БД (не только к SQL Server) и к любому набору инструментов (не только к Redgate). Если вы еще этого не видели, по крайней мере, это стоит того.
SchemaCrawler - это мой инструмент для создания текстового файла со всеми объектами схемы базы данных. Я разработал этот текстовый вывод как для восприятия человеком, так и для сравнения с аналогичным выводом с другого сервера.
На практике я обнаружил, что вывод текстового файла схемы базы данных полезен, когда выполняется как часть сборки. Таким образом, вы можете проверить текстовый файл в вашей системе управления исходным кодом и иметь историю версий того, как ваша схема развивалась с течением времени. SchemaCrawler также предназначен для автоматизации этого из командной строки.
Ответы:
всего пару минут назад я проверял это: таблица, которая должна существовать во всех проектах с базой данных , кажется достаточно простой для практического применения, проверьте это:
источник
Я думаю, что лучший способ - это создать базу данных как часть процесса сборки . Держите все скрипты в системе контроля версий вместе с остальным кодом, и каждый отвечает за свою среду.
В противном случае RedGate имеет инструмент для интеграции управления исходным кодом в SSMS, а SQL Compare полезно для сравнения / синхронизации схем MS SQL Server. Visual Studio Database Edition также имеет встроенный инструмент сравнения схем .
Еще один такой вопрос привел меня к Migrator Dot Net, который я собираюсь начать исследовать в свободное время. Это выглядит как хороший метод, но это может быть больше временных / накладных инвестиций, чем вы готовы сделать.
источник
eiefai уже упомянул таблицу, которая должна существовать во всех проектах с базой данных . Это отличный пост в блоге, но IMO это лишь часть пути к работающему решению для контроля версий баз данных. Я думаю, что любая попытка «ответить» на этот вопрос в реальном мире должна учитывать некоторую другую информацию о VCS и базах данных:
источник
Я думаю, что есть несколько разных подходов к этому вопросу. Я полагаю, что угол «сначала инструмент» будет меняться в зависимости от платформы и личных предпочтений. Например: я использую проект базы данных в MS Visual Studio, но я не уверен, что это отличное решение для MySQL. Я также знаю людей, которые продают свои любимые инструменты от Redgate, Erwin, Embarcadero и т. Д.
В этом вопросе также есть ракурс «сначала процесс», который (надеюсь) будет вновь рассмотрен на этом сайте в последующих вопросах. Ключевыми моментами в этом процессе являются получение схемы под контролем исходного кода и управление изменениями, так что вы можете применить изменения схемы от версии "x" к версии "y" в значительной степени по требованию.
Окончательный ответ на эту тему в конечном итоге будет выглядеть как книга, поэтому, вероятно, стоит начать с ссылки на нее: Redgate недавно опубликовал бесплатную книгу под названием « Руководство Red Gate по разработке на основе SQL Server », и пока есть там много дискуссий, это очень хорошее место для дебатов, ИМО. Вопреки названию, большая часть материала в этой книге достаточно общая, чтобы ее можно было применить к любой БД (не только к SQL Server) и к любому набору инструментов (не только к Redgate). Если вы еще этого не видели, по крайней мере, это стоит того.
Наконец, возможно, стоит добавить ссылку в «устаревшем ответе» от stackoverflow .
источник
SchemaCrawler - это мой инструмент для создания текстового файла со всеми объектами схемы базы данных. Я разработал этот текстовый вывод как для восприятия человеком, так и для сравнения с аналогичным выводом с другого сервера.
На практике я обнаружил, что вывод текстового файла схемы базы данных полезен, когда выполняется как часть сборки. Таким образом, вы можете проверить текстовый файл в вашей системе управления исходным кодом и иметь историю версий того, как ваша схема развивалась с течением времени. SchemaCrawler также предназначен для автоматизации этого из командной строки.
источник