Разрешение 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;

вот как я смог решить проблему, когда столкнулся с ней

  1. запустите SQL Management Studio.
  2. разверните узел сервера (в Обозревателе объектов').
  3. разверните узел базы данных, а затем разверните базу данных, которую вы пытаетесь получить доступ с помощью конкретного пользователя.
  4. разверните узел пользователи под узлом безопасность для базы данных.
  5. щелкните правой кнопкой мыши на конкретного пользователя и нажмите кнопку "Свойства". Вы получите диалоговое окно.
  6. убедитесь, что пользователь является членом группы db_owner (пожалуйста, прочитайте комментарии ниже, прежде чем использовать go this path) и другие необходимые изменения с помощью представления. (Я использовал это для 2016. Не уверен, как конкретный диалог выглядит в другой версии и, следовательно, не является конкретным)

  1. откройте SQL Management Studio
  2. расширить базу данных
  3. разверните папку "безопасность"
  4. Расширить "Пользователи"
  5. щелкните правой кнопкой мыши пользователя (тот, который пытается выполнить запрос)
  6. убедитесь, что вы снимите

    db_denydatareader

    db_denydatawriter

enter image description here

это должно идти само собой, но только предоставить разрешения что нужно пользователю. Простое ленивое исправление-проверить db_owner как и у меня, но это не лучшая практика безопасности.


предоставление разрешений для этого пользователя необходимо


Проверьте пространство вашей базы данных.эта ошибка возникает, когда пространство увеличивается по сравнению с пространством, заданным в базе данных.


Я решаю свою проблему, делая это. [Важное примечание: он позволяет расширить (расширить) привилегии для конкретной учетной записи, возможно, больше, чем требуется для отдельного сценария].

  1. перейти к 'Обозреватель Объектов ' из SQL Management Studio.
  2. расширения безопасность, потом логин.
  3. выберите пользователя, с которым вы работаете, затем щелкните правой кнопкой мыши и выберите свойства.
  4. In выбрать страницу перейдите к Роли Сервера
  5. Clic on администратор и сохранить.