ASP.NET App Wont поделится базой данных с SQL Server Management Studio Express

StackOverflow https://stackoverflow.com/questions/3943218

Вопрос

У меня есть приложение ASP.NET 3.5 с файлом базы данных SQL 2005 Express .mdf в папке App_data. Давайте позвоним так foo.mdf. На своем собственном приложение ASP.NET может подключиться к базе данных без проблем. Все идет нормально.

Тогда, если я устанавливаю SQL Server Management Studio Express На сервере и запустите его, он находит локальный экземпляр SQLExpress и подключается к нему, но не отображает Foo.mdf в списке баз данных.

Поэтому я пытаюсь приложить Foo.mdf, щелкнув правой кнопкой мыши по базам данных и выбирая прикрепление .. И нахождение .mdf. Это не удается с расплывной ошибкой:

CREATE FILE encountered operating system error 32(error not found)  
while attempting to open or create the physical file
'C:\inetpub\wwwroot\FooApp\App_Data\Foo.mdf'. (Microsoft SQL Server, Error: 5123)

Если я остановлю свой сайт asp.net в IIS, то прикрепить делает Работа, но затем, когда я перезагрузим приложение ASP.NET, он не может подключиться к Foo.mdf.

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

Надеюсь, я делаю это неправильно. Пожалуйста, порекомендуйте.

Это было полезно?

Решение

Можете ли вы проверить строку подключения вашего приложения и посмотреть, имеет ли она Instance use = true

Например:

Data Source=.\SQLEXPRESS;Integrated Security=true; AttachDbFilename=|DataDirectory|\mydb.mdf;User Instance=true;

От MSDN : Другой основной проблемой с экземплярами пользователей происходит, потому что SQL Server открывает файлы баз данных с эксклюзивным доступом. Это необходимо, потому что SQL Server управляет блокировкой данных базы данных в своей памяти. Таким образом, если более одного экземпляра SQL Server имеет одинаковый открытый файл, есть потенциал для повреждения данных. Если два разных пользовательских экземпляра используют один и тот же файл базы данных, один экземпляр должен закрыть файл до того, как другой экземпляр может открыть его.

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

Server=.\SQLEXPRESS;Database=myDataBase;Trusted_Connection=True;

Если это не проблема в вашем случае, также проверяйте раздел «Общие вопросы» по ссылке выше. Это может быть связано с разрешениями в соответствии с пунктами 1/2 в разделе «Общие вопросы»

Другие советы

У меня нет опыта использования базы данных по умолчанию ASP.NET, но вы пытались переместить MDF в свою папку SQL Express Data? (по умолчанию. Вы захотите изменять строку подключения в файле Web.config, чтобы выглядеть так:

<connectionStrings>
    <add name="ApplicationServices"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=aspnetdb"
     providerName="System.Data.SqlClient" />
</connectionStrings>

Добавьте следующую учетную запись пользователя в папку * app_data * вашего сайта: SQLSERVERMSSQLUSER $. Отказ Ищите его в передовых разрешениях безопасности, поэтому вы выполняете поиск там, а затем предоставить ему полный контроль.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top