Скрипт для отправки изменений базы данных на серверы - PullRequest
1 голос
/ 27 января 2009

Это, наверное, самая классическая проблема с базой данных.

У меня есть программное решение для электронной коммерции, размещенное на сервере SQL для данных, и веб-сервер для внешнего интерфейса. Каждый экземпляр / клиент имеет свою собственную базу данных на SQL Server 2008.

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

Как опубликовать это изменение во всех базах данных без потери данных? Это должно быть сделано через скрипт или что-то подобное. Централизованное управление - это ключ ...

Ответы [ 5 ]

2 голосов
/ 27 января 2009

Возможно, это то, что вы уже рассмотрели, но моя компания использует программное обеспечение от Red Gate (http://www.red -gate.com / ), которое сравнивает нашу версию разработки БД и производственную, генерирует и выполняет сценарии для приведения производства в соответствие с разработкой.

(я не продавец из Red Gate, но я думаю, что это то, что вы ищете)

2 голосов
/ 27 января 2009

Я использую SQL Compare для изменений схемы и SQL Data Compare для изменений данных. Работает как шарм!

0 голосов
/ 27 января 2009

В другом плакате упоминались продукты Red Gate, и я добавлю еще один коммерческий продукт - Quest Change Director:

http://www.quest.com/change-director-for-sql-server/

Отказ от ответственности: я работаю в Quest, хотя я не в продажах. Change Director выполняет сравнения, синхронизацию, ссылки на систему управления изменениями, может использовать ваш сервер dev / qa в качестве источника или использовать сценарии T-SQL, имеет журнал аудита и возможности отката и т. Д.

Как вы сказали, центральное управление является ключевым, и этот продукт фокусируется на этом.

0 голосов
/ 27 января 2009

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

Конечно, хуже, если экземпляры SQL Server, которые вам нужно обновить, удалены от вас и поэтому не доступны напрямую.

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

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

На удаленном сервере SQL у нас есть приложение .NET, которое вызывает веб-сервис, загружает файлы сценариев, распаковывает их и применяет их к базе данных.

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

Единственное необходимое ручное вмешательство - это сначала создать сценарии и загрузить их на центральный сервер.

0 голосов
/ 27 января 2009

Сценарий должен выполняться на сервере SQL Server администратором базы данных.

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

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