Какой самый простой способ передачи изменений с одного сервера на другой без воссоздания таблиц? - PullRequest
0 голосов
/ 28 декабря 2010

У меня есть тест и сервер разработки.Какой самый простой способ передать изменения таблицы с сервера разработки на тестовый сервер без потери данных (Удалить таблицу ... Создать таблицу ...)?

Ответы [ 7 ]

4 голосов
/ 28 декабря 2010

Лучше всего придумать надежный процесс управления релизами.

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

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

Делая это, вы можете

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

Я склонен использовать следующую структуру папок

ChangeNo-xxxxx-Description
--> release.bat (sqlcmd script to loop through release folder)
--> rollback.bat (sqlcmd script to loop through rollback folder)
--> release (folder)
---->0001.ChangeDescription.sql
---->0002.ChangeDescription.sql
--> rollback (folder)
---->0001.ChangeDescription.sql
---->0002.ChangeDescription.sql

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

Самый простой способ синхронизировать ваши схемы между средами - это использовать Red-Gate SQL Compare или Embarcadero DB Change Manager, однако после синхронизации схемы вы будете иметь представление о том, почему вы внесли какое-либо изменение, или о методе отмены любого из перемены. сделал?

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

Отличный инструмент не может заменить управление изменениями и релизами.

2 голосов
/ 29 декабря 2010

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

Если вы хотите что-то, что у вас уже есть, вы можете выполнить эти шаги

  1. Сценарий обеих баз данных
  2. Проверить два файла в Блокноте на наличие различий

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

1 голос
/ 28 декабря 2010

Я только что попытался «проголосовать» за ответ Джона Дакосты - но, увы, мне не хватает репутации в переполнении стека, чтобы это сделать.

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

Так что, пока я не могу «проголосовать» за пост Джона - я хотя бы поднимаю чашку с кофе в его сторону.(Где бы он ни был.)

1 голос
/ 28 декабря 2010

Попробуйте что-то вроде Red-Gate SQL Compare и SQL Data Compare

Или, если у вас есть SQL Server Express , вы можетеиспользуйте бесплатное xSQL Lite Edition , которое ограничено максимальным количеством таблиц и других объектов базы данных - но, эй, это БЕСПЛАТНО!: -)

0 голосов
/ 20 мая 2011

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

  1. Выполните резервное копирование базы данных назначения (ОЧЕНЬ ВАЖНО).

  2. В исходной (исходной) базе данных создайте сценарий DROP & CREATE новой таблицы через SQL Management Studio, щелкнув правой кнопкой мыши таблицу Script Table как | СОЗДАЙТЕ и СОЗДАЙТЕ, чтобы Новое окно редактора запросов. Убедитесь, что скрипт включает в себя любые индексы и значения по умолчанию и т. Д., Которые вы хотите сохранить. ЕЩЕ НЕ ВЫПОЛНЯЙТЕ ЭТОТ ПИСЬМО.

  3. В тестовой (целевой) базе данных выполните следующий SQL:

SELECT
    *
INTO
    MyTable_temp
FROM
    MyTable
  1. Выполните сценарий DROP и CREATE, начиная с шага 1 в базе данных DESTINATION.

  2. В целевой базе данных выполните следующий SQL (замените имена таблиц и полей соответствующими значениями):

SET IDENTITY_INSERT MyTable ON
GO

INSERT INTO
    MyTable
(
    Field1
,   Field2
,   Field3
,   Field4
,   ...
)
SELECT
(
    Field1
,   Field2
,   Field3
,   Field4
,   ...
)
FROM
    MyTable_temp

SET IDENTITY_INSERT MyTable OFF
GO
  1. Подтвердите, что все есть, выполнив
SELECT COUNT(*) FROM MyTable
  1. Если все выглядит хорошо, то УДАЛИТЕ временную таблицу
DROP TABLE MyTable_temp
0 голосов
/ 30 декабря 2010

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

0 голосов
/ 28 декабря 2010

RedGate имеет набор инструментов, которые могут синхронизировать структуру базы данных и данные.

http://www.red -gate.com / продукты / SQL-разработка /

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