2

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

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

Разрешение CREATE DATABASE запрещено в базе данных «master». Попытка подключения базы данных с автоименованием для файла 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

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

Надеется, что это помогает

+0

Закончился доступ к правильной игре SQL Management Studio, но когда я это сделал, было довольно просто дать Network Service вход на сервер и разрешения для этой базы данных/файла. Спасибо за вашу помощь, это сработало. – Max

1

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

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

+0

Хотя я думаю, что это, вероятно, будет работать, я хотел бы использовать Network Service, а не работать с олицетворением. благодаря – Max

Смежные вопросы