«Отказано в разрешении SELECT для объекта» при работе с представлениями в отдельной схеме - PullRequest
3 голосов
/ 15 января 2010

Примечание. Это запись вики сообщества, предназначенная главным образом для документирования проблемы и ее решения. Я вряд ли смог найти информацию в сети, чтобы решить эту проблему. Надеюсь, это кому-нибудь поможет!


У меня есть БД SQL-Server 2005 с таблицами данных в схеме dbo. Для нового компонента в проекте я создал новый слой доступа к данным (используя NHibernate), и, чтобы аккуратно это реализовать, я создал новую схему.

Для всех нужных мне объектов я создал вид:

myschema.ViewTable1 myschema.ViewTable2 и т.п. И предоставил право выбора.

Теперь, когда я попытался получить доступ к этим представлениям пользователем, у которого были только разрешения на выборку для представлений, но не базовая таблица с NHibernate, я получил:

The SELECT permission was denied on the object 'dbo.Table1', database 'TestDB', schema 'dbo'.

Согласно всей документации, это должно быть возможно. Еще более странно то, что SQL выполнял работу, выполненную в Management Studio, как простой выбор. Но если я выполнил его с exec sp_executesql, как это делает NHibernate, он сломался с тем же исключением.

После долгих поисков я наконец нашел этот вопрос здесь, в StackOverflow. Добавлено Обновление дало подсказку:

Моя новая схема myschema принадлежала моему пользователю Windows, а не dbo !

После изменения владельца схемы на dbo и воссоздания всех myschema объектов ( Да, это необходимо! ) все начинает работать как положено!

Надеюсь, это кому-нибудь поможет.

1 Ответ

4 голосов
/ 15 января 2010

Решение:

Убедитесь, что ваши схемы принадлежат той же роли!

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