Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1131
Всем привет,

на работе есть 4 базы.
Начальство решило оптимизировать процесс. Т.е. сначала все изменения в базах тестируем в тестовых серверах, затем переносим в боевые.

Вопрос:
как правильно и, главное, удобно, организовать процесс синхронизации объектов между базами данных?
У меня будет 8 баз. Четыре тестовых и четыре боевых. Есть ли какой-нибудь механизм логирования изменений и переноса изменений из тестовой базы в боевую?

Сейчас, все что мне на ум приходит, это тупое записывание где-чего поменяли, а затем допиливание ручками.

Спасибо.
22 янв 16, 14:11    [18715892]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gena928
как правильно и, главное, удобно, организовать процесс синхронизации объектов между базами данных?

И на тестовой базе и на промышленной для внесение изменений вы запускаете скрипты.
Которые изготовили ваши разработчики
Из скриптов, прошедших тестирование, собирается пакет установки
Скрипты храняться в системе контроля версий
22 янв 16, 14:16    [18715938]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1131
Glory,

это же адъ!
Если я хочу поменять таблицу, то вместо работы в Management Studio с графическим редактором, мне придется делать скрипты?
А если проект какой-нибудь, где, скажем, 6 таблиц и 8 хранимок. Это все постоянно меняется, дополняется. Заипешься же!
22 янв 16, 14:21    [18715992]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gena928
это же адъ!

Это не ад. Это - правильно.

Gena928
А если проект какой-нибудь, где, скажем, 6 таблиц и 8 хранимок. Это все постоянно меняется, дополняется. Заипешься же!

Заипешься потом выяснять, откуда на промышленной базе вот именно эта таблица/процедура с именно такой структурой/кодом. Потому что никто не помнит, что же он там в Management Studio в графическим редакторе нажимал.

Сообщение было отредактировано: 22 янв 16, 14:24
22 янв 16, 14:24    [18716020]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Gena928
Если я хочу поменять таблицу, то вместо работы в Management Studio с графическим редактором, мне придется делать скрипты?
А если проект какой-нибудь, где, скажем, 6 таблиц и 8 хранимок. Это все постоянно меняется, дополняется. Заипешься же!
Наймите 14 человек, каждый из которых будет отвечать за свой объект и сможет не отвлекаясь кликать мышкой по кнопочкам. И никаких скриптов, что, несомненно, в вашем случае неоспоримое преимущество.
22 янв 16, 14:27    [18716052]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Glory
И на тестовой базе и на промышленной для внесение изменений вы запускаете скрипты.
Которые изготовили ваши разработчики
Из скриптов, прошедших тестирование, собирается пакет установки
Скрипты храняться в системе контроля версий

+100500
+ отдально тестируються сам пакет изменений на сервере который содержит копию текущего продакшена
22 янв 16, 14:31    [18716084]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Gena928
Glory,

это же адъ!
Если я хочу поменять таблицу, то вместо работы в Management Studio с графическим редактором, мне придется делать скрипты?
А если проект какой-нибудь, где, скажем, 6 таблиц и 8 хранимок. Это все постоянно меняется, дополняется. Заипешься же!
Поверьте, набор кода изменения модели данных не является самыми большими затратами при разработке. Особенно на тех этапах, когда система эксплуатируется, и в неё вносятся изменения. Время уйдёт на думать и кодить исполняемый код, а на схему данных будут уходить крохи.

А вот на остальных действиях такая схема работы будет очень сильно экономить время, вы будете видеть историю и авторов всех изменений, привязку изменений к бизнес-задачам и требованиям, вы будете тратить намного меньше времени на технологические действия на ваших тестовых и боевых базах, легко их автоматизировать.
22 янв 16, 14:36    [18716117]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1131
alexeyvg,

ок, спасибо. Буду думать.
22 янв 16, 14:51    [18716222]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Gena928,

Зарегистрируйте ваши базы, и рабочие, и тестовые как Data-tier Application.
Из тестовой генерируете dacpac или bacpak файлы(если с данными), которые потом разворачиваете на рабочих базах.
В свойствах проставляете номера версий, которые будут храниться в метаданных.
Если ещё использовать Visual Studio с SSDT, Schema Compare, SQL Server Data Project и т.д., то процессы разработки и развёртывания будут вполне контролируемыми.
22 янв 16, 14:53    [18716234]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1131
Jovanny,

а Вы пробовали работать с SQL Server Data Project?
Я что-то пытался, и он очень глючил. Нет?

Почитал про chema compare.
SQL Server Data Tools (SSDT) includes a Schema Compare utility that you can use to compare two database definitions. The source and target of the comparison can be any combination of connected database, SQL Server database project or snapshot or .dacpac file. The results of the comparison appear as a set of actions that must be taken with the target to make it the same as the source. Once the comparison is complete you can update the target directly (if the target is a project or a database) or generate an update script that has the same effect.

Кажись то, что надо. Будут копать в эту сторону. Т.е. делаем изменения, затем schema compare => git => боевая база.
22 янв 16, 14:56    [18716256]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Gena928
а Вы пробовали работать с SQL Server Data Project?
Я что-то пытался, и он очень глючил. Нет?
Штука хорошая, но для небольших проектов.
Если у вас приложение приличное, 4 базы всё таки, если будет много данных, сложная модель, много логики, требования к непрерывности работы, да ещё и к работе клиентов разных версий с базой - то геморроя и в итоге затрат труда с SQL Server Data Project будет больше, чем с тупой схемой со скриптами.
22 янв 16, 15:00    [18716308]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gena928
Т.е. делаем изменения, затем schema compare => git => боевая база.

И на какой момент времени вы будете делать schema compare ?
Как schema compare подтердит то, что все, что сейчас есть на тестовой базе должно попасть в промышленную базу ?
22 янв 16, 15:01    [18716315]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Gena928
Jovanny,

а Вы пробовали работать с SQL Server Data Project?
Я что-то пытался, и он очень глючил. Нет?
Последние версии вполне приличные.
Gena928
Кажись то, что надо. Будут копать в эту сторону. Т.е. делаем изменения, затем schema compare => git => боевая база.
Да, часто так и делаю.
22 янв 16, 15:03    [18716330]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Gena928
Кажись то, что надо. Будут копать в эту сторону. Т.е. делаем изменения, затем schema compare => git => боевая база.
Таких средств полно, даже просто в MS Visual Studio, даже старых версий; работают они очень неплохо.

Только, повторю, когда система начнёт жить в продакшене, проблем будет больше, намного больше, чем с ручными скриптами.
22 янв 16, 15:03    [18716331]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Glory
Gena928
Т.е. делаем изменения, затем schema compare => git => боевая база.

И на какой момент времени вы будете делать schema compare ?
Как schema compare подтердит то, что все, что сейчас есть на тестовой базе должно попасть в промышленную базу ?
А Schema Compare должна что-то подтверждать? Она выдаст разницу в метаданных, а разработчику решать, что деплоить, а что нет.
22 янв 16, 15:06    [18716355]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Jovanny
А Schema Compare должна что-то подтверждать? Она выдаст разницу в метаданных, а разработчику решать, что деплоить, а что нет.

И как же он это решит ?
Вот сравнение показывает разницу в размере двух полей таблицы
Это разница есть
- результат одного проекта, протестированного и готового к установке
- результат двух проектов, протестированных и готовых к установке
- результат одного проекта, протестированного и готового к установке и второго проекта, который еще тестируется и не готов к установке
22 янв 16, 15:10    [18716394]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
Gena928
Glory,

это же адъ!
Если я хочу поменять таблицу, то вместо работы в Management Studio с графическим редактором, мне придется делать скрипты?

Никто не мешает после работы в management Studio с графическим редактором сохранить изменения как скрипт.
22 янв 16, 15:12    [18716422]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Jovanny
А Schema Compare должна что-то подтверждать? Она выдаст разницу в метаданных, а разработчику решать, что деплоить, а что нет.
Будет скрипт, страниц на 50, результат деятельности разрабов за месяц. Это только по модели данных.

С этими изменениями связаны изменения кода, причём несколько изменений кода связаны с несколькими разными изменениями одного и того же объекта (а в скрипте изменения будут кумулятивные).

Это всё нереально отследить и этим управлять.

Реальное использование этих Compare - тулзов ровно одно:

Разработчики разрабатывают-разрабатывают.
Потом перестают разрабаотывать, тестеры тестируют-тестируют.
Потом "schema compare => git => боевая база."
Потом разработчики снова начинают цикл разработки.

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

Обычно это неприемлимо для бизнеса, да и разработчикам скучно.
22 янв 16, 15:20    [18716490]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
guuuest
Guest
Gena928,

Учитывайте, что работа в SSDT будет отличатся от работы напрямую с базой.
Вам нужно будет из уже существующей базы (или баз) создать проект(ы) со скриптами.
Проект(ы) добавить в систему контроля версий.
Настроить место для развертывания тестовой базы. При попытке развернуть тестовую базу получить массу ошибок в скриптах (например ссылки на различные объекты в соседних базах или прилинкованных серверах, которые без проблем используются на живой базе, но SSDT их не пропустит, потому что не сможет проверить пока они не будут "включены" в проект). Увидите насколько криво написаны скрипты (SSDT умеет анализировать код). Долго и нужно все выправлять. Все изменения кода вести в проекте, а не в базе (рабочей/тестовой) и фиксировать с внятными комментариями с привязкой к задачам.
В финале через сам же SSDT можете публиковать базу в продакшн, но тут надо быть осторожным. Не любой автоматический скрипт сделает то что нужно.
На первое время геморрой обеспечен 100%. Зато если разобраться и войти в этот процесс, то дальше достаточно легко. Но вот первое время может и затянуться. Зависит от уровня разработчиков и руководителя проектов. И это надо учитывать, поскольку рабочие процессы никто не отменяет на переходный период.
22 янв 16, 15:23    [18716516]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Glory,

Существуют такие вещи, как управление проектами.
Погуглите Agile, SCRUM и т.д., и т.п.

Никто не должен бездумно деплоить все изменения.
22 янв 16, 15:24    [18716536]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Jovanny
Существуют такие вещи, как управление проектами.
Погуглите Agile, SCRUM и т.д., и т.п.

Никто не должен бездумно деплоить все изменения.

Это же вы предложили деплоить изменения схем.
И как управление проектом поможет кому-то разобраться в многостраничной _накопительной_ разнице между схемами на предмет "это играете, это не играете, а здесь вообще рыбу заворачивали"
Управление проектом как раз и подразумевает, что точно знаете, что и как вы изменяете в рамках своего проекта. А не ищите, где же ваша часть изменений вот в этом офигительтно большом листинге
22 янв 16, 15:30    [18716583]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
alexeyvg,

Возможно, такое видение использования SSDT основано на Вашем печальном опыте.
22 янв 16, 15:34    [18716615]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1131
у меня все проще.
по SQL серверу я единственный разработчик. Пока по крайней мере.
Visual Studio Schema Compare отлично генерит скрипты.
22 янв 16, 15:35    [18716629]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gena928
по SQL серверу я единственный разработчик. Пока по крайней мере.

И что вы тогда собрались оптимизировать ?
22 янв 16, 15:36    [18716641]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server: тестовая и боевая базы. Как правильно проводить синхронизацию при разработке?  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1131
Glory,

начальство требует чтобы все изменения были задокументированы и сохранены в GIT. Т.е. чтобы было видно кто что заказывал и что для этого сделали.
22 янв 16, 15:37    [18716653]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить