Платформа.NET « Разрешение SELECT запрещено для объекта

Сделал веб-приложение в visual studio, которое выводит некоторую информацию из базы данных MS Sql, всё работает
Создал сайт в ISS, с физ.путём до папки где лежат файлы asp (Default.aspx, Default.aspx.cs, plan.aspx, plan.aspx.cs, web.config)

В web.config прописана строка подключения:
add name="decanatConnectionString" connectionString="Data Source=.SQLExpress; Initial Catalog=Деканат; Integrated Security=True;" providerName="System.Data.Odbc"

Может я что делаю не так ?

В visual studio всё работало, а когда добавил сайт стала выдоваться такая ошибка:
Сведения об исключении: System.Data.SqlClient.SqlException: Разрешение SELECT запрещено для объекта "Планы", базы данных "Деканат", схемы "dbo".

В чём может быть проблема? какое решение?

1 ответов


У вас в настройках сайта на IIS разрешён анонимный доступ. В этом случае сайт работает (по умолчанию) под учётной записью Internet Guest Account.
В это же время, в строке подключения к базе данных, вы указываете, что необходимо выполнять запросы к базе под тем пользователем, под которым работает приложение (инструкция Integrated Security=True).
Таким образом получаем, что у пользователя Internet Guest Account не хватает прав.

Чтобы решить проблему, используйте явное указание в логина и пароля в строке подключения. Форматы строк подключения можно найти здесь: http://connectionstrings.com/sql-server-2005

Однако, судя по сообщению об ошибке, у вас ещё и проблемы с установкой прав на операции над таблицами. Возможно вы явно указывали, для каких таблиц, кому что разрешено (SELECT, INSERT, UPDATE, DELETE). Не самая лучшая модель разработки при неполном понимании того, как работает SQL Server.

P.S. В Visual Studio всё работало, потому что в ней сайты запускаются по умолчанию под учётной записью текщего пользователя (разработчика), который наверняка локальный администратор, а следовательно имеет все права на локальный сервер баз данных.