2011-02-07 2 views
2

Вот моя дилемма,Как я могу обновить несколько схем баз данных SQL Server

Я работаю на некоторые модели SaaS с использованием ASP.net MVC3 и SQL Server.

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

Я могу предвидеть вопрос уже, и мне нужно решить, как лучше всего справиться с ним, прежде чем он станет реальной проблемой. Имея эти множественные базы данных, если все будет хорошо в этом году стучать по дереву, мы можем потенциально получить 500 клиентов к концу года. По понятным причинам невозможно вручную синхронизировать схемы. VS2010 имеет хороший инструмент сравнения SQL-запросов, который будет полезен, но как я должен следить за тем, чтобы все базы данных имели последнюю версию?

Задача 2

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

Core.sql 
Widget-Map.sql 
Widget-HR.sql 
etc.. 

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

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

так что если я просто создаю свои собственные инструменты для обновления схем?

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

Большого спасибо за любую помощь,

Несколько Источника я уже прочитал, Migrations for Java

http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx

+0

Из предложения Mitch я изучаю проекты базы данных, поэтому буду читать http://blogs.msdn.com/b/jenss/archive/2010/08/21/alm-visual-studio-database-projects -guidance-is-out-in-the-wild.aspx и обновление моего хода – AnonUser

+0

В блоге Gert Drapers есть много информации о GDR R2: http://blogs.msdn.com/b/gertd/ –

+0

@MitchWheat Спасибо за великие связи. Я просто настраиваю сервер Team Foundation и в настоящее время конвертирую схемы базы данных в проекты баз данных, и я думаю, что это сделает это очень просто. Еще раз спасибо – AnonUser

ответ

1

Вне ОРМА, что делает обновление структуры, метода сломаться as:

  1. Сравните с некоторыми БД, что считается правильным. Лично я считаю это рискованным, так как я бы предпочел бы, чтобы обновление было привязано к разворачиванию кода, и что спецификация db включена как-то в код. Это личное предпочтение.

  2. Обновление сценариев. Раньше он был самым популярным, кажется, что он уходит с большим успехом. В основном для любого конкретного выпуска у вас есть скрипт «install», который создается с нуля, и второй набор скриптов, которые обрабатывают все инкрементальные элементы «From_x.y.z_to_a.b.c». Про: Просто понять. Con: удвоенный код, чрезвычайно важный PITA, когда 7-й скрипт 17 терпит неудачу.

  3. Обновления на основе словаря или схемы.Вероятно, наименее популярный в этом за пределами меня, я не знаю, кто это делает :(Хорошо, может быть, это преувеличение. У PHP Doctrine есть что-то вроде этого. Идея заключается в том, что какой-то инструмент сравнивает схему с существующей базой данных и приносит схему текущей. Pro: один файл схемы (или файлы), без удвоения кода, лучший способ гарантировать обновление приведет к созданию базы данных, которую вы ожидаете в кратчайшие сроки. Con: (почти) никто не делает этого, нехватка инструментов.

У меня есть инструмент, который делает это, и должен работать на MS SQL, но сейчас я тестирую только Postgres, поэтому я не буду публиковать ссылку. Потому что я не хочу тратить ваше время.

+0

Проекты базы данных Visual Studio Visual Studio аналогичны (3), но превосходят в том, что схема находится под контролем источника. Проекты ГДР могут быть сложными, но хорошо работать. –

+0

@Mitch Я думаю, я должен был указать, что ваш словарь/схема будет гем, конечно, под контролем источника :) –

0

В теории вы могли бы создать отдельную ветвь для каждой разницы а также когда вам нужно их обновить, сделайте это, используя командную строку SQL Compare Pro от источника управления. Это потребует от вас использовать SQL Source Control, чтобы сохранить схему в формате, контролируемом исходным кодом, которое может распознать SQL Compare Pro.

Пожалуйста, свяжитесь с [email protected], если вам нужна помощь в том, чтобы попробовать это или настроить.

+0

Спасибо за ответ, я планирую использовать некоторые из инструментов от RedGate, но, глядя в новый 2010 проект базы данных позволяет мне иметь схему базы данных с контролируемым исходным кодом внутри визуальной студии без большой суеты. – AnonUser

Смежные вопросы