Лучший способ создать настройки базы данных по умолчанию через страницу .aspx? - PullRequest
0 голосов
/ 29 января 2009

Мы собираемся продавать услугу, которая будет размещаться у нас, и у каждого клиента, которого мы размещаем, будет своя собственная база данных, но будет один централизованный веб-сайт. В настоящее время у меня есть пустая база данных с несколькими вещами, которые понадобятся новому клиенту. Каков наилучший способ скопировать эту базу данных, чтобы я мог настроить другой клиент? Я хочу быть в состоянии сделать это со страницы .aspx. Заранее спасибо!

Обновление: Под страницей .aspx я просто имел в виду, что мне нужно иметь возможность запустить процесс со страницы .aspx.

Update2: Мы работаем с SQL Server 2008.

Обновление 3: ссылка на ответ Cade Roux ... Спасибо за отличный ответ, но ... В чем причина объединения всех баз данных в одну, а затем разграничения клиентов на основе идентификатора в каждой таблице? Не сильно ли это усложнит архитектуру всего продукта? Мне нужно было бы добавить эти столбцы Client ID практически к каждой таблице, и DAL должен был бы знать, какие данные клиента он ищет. При текущей настройке я просто отключаю строку подключения в DAL, в зависимости от того, какой пользователь обращается к сайту. Таким образом, после установки строки подключения мне больше не нужно беспокоиться о поиске данных, специфичных для клиента! Как эти подходы сравниваются (и я должен добавить это как отдельный вопрос?

Ответы [ 4 ]

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

У вас есть несколько вариантов:

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

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

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

Что касается ваших заметок о варианте 3 - это зависит от вашего приложения. Мультитенант может быть сложно дооснастить. С другой стороны, управление и обновление сотен отдельных клиентских баз данных может быть затруднено в долгосрочной перспективе.

Ранее задавались вопросы о переполнении стека:

Каковы преимущества использования единой базы данных для КАЖДОГО клиента?

Одна база данных или много?

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

1 голос
/ 29 января 2009

SQL Server имеет системную базу данных под названием «модель». Любые объекты базы данных (таблицы, представления, хранимые процедуры), существующие в модели, добавляются в любую новую созданную базу данных.

Вы можете создать свою схему «клиентской базы данных» как модель, и любая новая база данных будет иметь все те же таблицы ...

Но, если вам понадобится изменить схему базы данных позже, лучшим вариантом будет написание сценариев изменений, которые являются частью вашего файла code-behind. Поскольку изменения в базе данных 'model' не распространяются на существующие базы данных, приложению необходимо обнаружить и обновить схему базы данных по мере необходимости.

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

1 голос
/ 29 января 2009

Вы не говорите, какую версию БД вы используете, но в SQL2005-2008 у вас есть возможность «сценарий базы данных как», а затем «создать в» и заставить его переносить sql в окно запроса. Затем вы можете работать с этим, чтобы создать хранимую процедуру, которую можно вызывать со страницы .aspx.

1 голос
/ 29 января 2009

В зависимости от того, какую базу данных вы используете, существует несколько подходов. Самое простое - попросить программное обеспечение вашей базы данных сгенерировать код SQL для создания базы данных и включить его в свое программное обеспечение. Другой вариант - просто написать в C # / VB шаги, необходимые для воссоздания вашей пустой базы данных.

Зачем нужна страница .aspx?

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