Пользовательский экземпляр SQL Express с несколькими сайтами ASP.NET - PullRequest
2 голосов
/ 08 апреля 2009

Как я могу получить два отдельных сайта ASP.NET, в данном случае веб-сайт, использующий Entity Framework и веб-службу, для использования одной и той же локальной базы данных mdf & ldf?

Я оглянулся и думаю, что этот вид локальной БД называется User Instance - по крайней мере, так, как я сейчас его использую. Я не был уверен, сработает ли это или нет, пока не нашел приведенную ниже информацию из библиотеки MSDN , и теперь я действительно не уверен, сработает ли она.

Пользовательские сценарии включают в себя:

...

Выделенный хостинг ASP.NET с использованием аутентификации Windows. Один экземпляр SQL Server Express может быть размещен в интрасети. Приложение подключается с использованием учетной записи ASPNET для Windows, а не с помощью олицетворения. Пользовательские экземпляры не должны использоваться для сценариев стороннего или общего хостинга, когда все приложения будут использовать один и тот же пользовательский экземпляр и больше не будут оставаться изолированными друг от друга.

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

Предпочтительно, чтобы mdf & ldf сохранялись в каталоге App_Data веб-сайта (| DataDirectory |). Если я сделаю это таким образом, я не думаю, что смогу надежно использовать относительную адресацию для Службы, если я не помещу ее в подкаталог для Сайта, это правильно?

edit: Я использую SQL Server Express, потому что это задание для школы, поэтому мне в основном приходится его использовать. Если есть способ без пользовательского экземпляра, я постараюсь обойтись без него.

1 Ответ

1 голос
/ 08 апреля 2009

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

Кроме того, пользовательские экземпляры поддерживаются только в SQL Server Express. Я не знаю, как выглядит ваша производственная среда, но, вероятно, она не работает на SQL Server Express?

Вы должны использовать AttachDBFilename в строке подключения вашего веб-приложения, чтобы указать на локальную базу данных: AttachDBFilename=|DataDirectory|\MyDB.mdf.

В вашем веб-сервисе вы также используете AttachDBFilename, но это зависит от места развертывания веб-сервиса, на которое нужно указать его.

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