Управление несколькими базами данных клиентов в приложении ASP.NET MVC - PullRequest
0 голосов
/ 21 апреля 2010

Я создаю приложение, которое требует отдельных баз данных SQL Server для каждого клиента.

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

В процессе создания базы данных-прототипа я попытался присоединить копию базы данных (сопутствующий файл .MDF, .LDF) к SQL Server, используя Sql Server Management Studio, и обнаружил, что SSMS ожидает, что база данных будет находиться в

c:\program files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabaseName.MDF

Это "особенность" SQL Server? Есть ли способ управлять отдельными базами данных в отдельных каталогах? Или мне придется поместить все базы данных клиентов в один каталог? (Я надеялся на немного лучший контроль, чем этот).

ПРИМЕЧАНИЕ. В настоящее время я использую SQL Server Express, но только для целей тестирования. Производственная база данных будет SQL Server 2008, версия Enterprise. Поэтому «Пользовательские экземпляры» не являются опцией.

1 Ответ

0 голосов
/ 21 апреля 2010

В MDF есть таблица, содержащая физический путь всех файлов базы данных, как они были в экземпляре, от которого она была отсоединена. Вы можете перезаписать расположение (я) во время операции присоединения:

CREATE DATABASE <dbname>
 ON (name=dbfilelogicalname, filename='c:\myNewPath\dbfilename.mdf'),
 (name=dbfile2logicalname, filename='c:\myNewPath\dbfilename2.ndf'),
 (name=dbloglogicalname, filename='c:\myNewPath\dblogfilename.ldf')
 FOR ATTACH;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...