Лучший способ создать SQL Server откатывает сценарий?

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

abstract class Database
{
    abstract public function export();
}

class MySQL extends Database
{
}

Неустранимая ошибка: класс MySQL содержит 1 абстрактный метод и поэтому должен быть объявлен как абстрактный или реализовать остальные методы (Database :: export)

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

abstract class Database
{
    public function export(){
        throw new \LogicException(__CLASS__ . ' driver does not support ' . __FUNCTION__);
    }
}

class MySQL extends Database
{
}

... но вы получите приятную ошибку, если попытаетесь ее использовать:

$s = new MySQL();
$s->export();

Неустранимая ошибка: необработанное исключение 'LogicException': драйвер MySQL не поддерживает экспорт [ 117]

6
задан Cade Roux 12 January 2009 в 16:38
поделиться

5 ответов

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

4
ответ дан 8 December 2019 в 18:43
поделиться

Если это - относительно маленькая база данных, просто делают резервное копирование перед применением обновления. Если все это выходит из строя, Вы делаете восстановление.

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

1
ответ дан 8 December 2019 в 18:43
поделиться

Если Вы используете инструмент как SQL Redgate, Выдерживают сравнение, можно выполнить сравнивание между этими двумя базами данных оба пути и использовать обоих для создания сценариев, в которых Вы нуждаетесь. dev для подталкивания сценария имел бы изменения, которые Вы вносите, и prd к dev сценарию возвратился бы к orginal производственному состоянию базы данных. Это гарантирует, чтобы Вы ничего не забывали ни в одном сценарии также.

1
ответ дан 8 December 2019 в 18:43
поделиться

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

http://msdn.microsoft.com/en-us/library/ms175158.aspx

0
ответ дан 8 December 2019 в 18:43
поделиться

Вы пропускаете пятый шаг

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

Более эффективный подход должен зарегистрировать изменения, поскольку они происходят как RoR миграции сделать. Для каждого изменения DB Вы создаете сценарий, который будет и применять изменение и откатывать его (по Вашему выбору, конечно). У Вас могут затем быть те сценарии при управлении версиями точно так же, как Ваш код.

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

7
ответ дан 8 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

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