Разрешение SELECT было отклонено для объекта "пользователи", базы данных "XXX", схемы "dbo"
я переместил базу данных из SQL Server 2012 в Azure. Я не хочу использовать user master
, поэтому я создал пользователя test
. Это то, что я сделал для базы данных XXX в Azure:
create user test from login test with default_schema=[dbo]
exec sp_addrolemember 'db_owner','test'
Я проверил, и объекты базы данных, которые меня интересуют, находятся в схеме dbo
. В таблице Users
находится в схемы dbo
.
строка подключения в моем веб-проекте имеет test
как логин. Он выдает сообщение об ошибке:
The SELECT permission was denied on the object 'Users', database 'XXX', schema 'dbo'
что делает сообщение об ошибке означает, и что я могу сделать, чтобы пользователь test
доступ к базе данных XXX?
7 ответов
Я думаю, что проблема заключается в том, что пользователь имеет отказать. Эта ошибка возникает, когда созданный пользователь не имеет достаточных прав доступа к таблицам базы данных. Сделать права пользователя, чтобы получить то, что вы хотите.
грант пользовательские разрешения, такие как SELECT, INSERT, UPDATE и DELETE для таблиц в этой базе данных.
синтаксис для предоставления разрешения select:
USE YourDB;
GRANT SELECT ON dbo.functionName TO UserName;
вот как я смог решить проблему, когда столкнулся с ней
- запустите SQL Management Studio.
- разверните узел сервера (в Обозревателе объектов').
- разверните узел базы данных, а затем разверните базу данных, которую вы пытаетесь получить доступ с помощью конкретного пользователя.
- разверните узел пользователи под узлом безопасность для базы данных.
- щелкните правой кнопкой мыши на конкретного пользователя и нажмите кнопку "Свойства". Вы получите диалоговое окно.
- убедитесь, что пользователь является членом группы db_owner (пожалуйста, прочитайте комментарии ниже, прежде чем использовать go this path) и другие необходимые изменения с помощью представления. (Я использовал это для 2016. Не уверен, как конкретный диалог выглядит в другой версии и, следовательно, не является конкретным)
- откройте SQL Management Studio
- расширить базу данных
- разверните папку "безопасность"
- Расширить "Пользователи"
- щелкните правой кнопкой мыши пользователя (тот, который пытается выполнить запрос)
-
убедитесь, что вы снимите
db_denydatareader
db_denydatawriter
это должно идти само собой, но только предоставить разрешения что нужно пользователю. Простое ленивое исправление-проверить db_owner
как и у меня, но это не лучшая практика безопасности.
Проверьте пространство вашей базы данных.эта ошибка возникает, когда пространство увеличивается по сравнению с пространством, заданным в базе данных.
Я решаю свою проблему, делая это. [Важное примечание: он позволяет расширить (расширить) привилегии для конкретной учетной записи, возможно, больше, чем требуется для отдельного сценария].
- перейти к 'Обозреватель Объектов ' из SQL Management Studio.
- расширения безопасность, потом логин.
- выберите пользователя, с которым вы работаете, затем щелкните правой кнопкой мыши и выберите свойства.
- In выбрать страницу перейдите к Роли Сервера
- Clic on администратор и сохранить.