Проблема при подключении к файлу sql server express db с использованием учетной записи сетевой службы - PullRequest
2 голосов
/ 24 января 2010

Я использую VS2010 Beta 2 для создания службы WCF, размещенной на IIS. Я добавил файл базы данных SQL Server для использования в качестве простого хранилища данных, а затем сгенерировал несколько классов Linq to SQL для взаимодействия с ним.

Проблема возникает, когда Linq to SQL пытается подключиться к базе данных. Я получаю следующую ошибку ниже:

В базе данных «master» отказано в разрешении CREATE DATABASE. Попытка присоединить базу данных с автоматическим именем для файла c: \ Source \ SampleApp \ App_Data \ GameData.mdf не удалась. База данных с тем же именем существует, или указанный файл не может быть открыт, или он находится на общем ресурсе UNC.

Чтобы обойти предыдущую проблему, я уже изменил web.config, чтобы не использовать пользовательский экземпляр:

<add name="GameDataConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\GameData.mdf;Integrated Security=True;User Instance=False"
  providerName="System.Data.SqlClient" />

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

Интересно, если я изменю пул приложений для запуска в локальной системе, все будет работать правильно. Есть ли что-то еще, что я должен предоставить доступ NETWORK SERVICE?

Ответы [ 2 ]

2 голосов
/ 24 января 2010

Yopu должен использовать Sql Management Studio Express и добавить учетную запись сетевой службы в качестве имени для входа. Затем назначьте ему разрешения DBO для указанной базы данных или просто назначьте ему роль sysadmin. Обратите внимание, что при установке SQL Server 2005 любой редакции у вас есть первоначальная опция для установки учетной записи для входа в службы. Если вы укажете Сетевой сервис. по умолчанию учетной записи сетевой службы будет предоставлена ​​роль sysadmin.

Надеюсь, это поможет

1 голос
/ 24 января 2010

Если вы не используете <identity impersonate="true"/>, у вашего пользователя пула приложений недостаточно доступа к вашей базе данных.

Вы также можете создать пользователя базы данных (аутентификация SQL) и зафиксировать его учетные данные (имя пользователя / пароль) в строке подключения. Я обычно так и делаю.

...