Подтвердить что ты не робот

Разрешение SELECT было отклонено для объекта "Пользователи", базы данных "XXX", схемы "dbo",

Я переместил базу данных с SQL Server 2012 на Azure. Я не хочу использовать пользователя 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?

4b9b3361

Ответ 1

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

Предоставьте пользовательские разрешения, такие как SELECT, INSERT, UPDATE и DELETE для таблиц в этой базе данных.

Ответ 2

Синтаксис для разрешения выбора:

USE YourDB;

GRANT SELECT ON dbo.functionName TO UserName;

Ответ 3

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

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

Ответ 4

  1. Откройте SQL Management Studio
  2. Расширьте свою базу данных
  3. Разверните папку "Безопасность"
  4. Разверните "Пользователи"
  5. Щелкните правой кнопкой мыши пользователя (тот, который пытается выполнить запрос) и выберите Properties.
  6. Выберите страницу Membership.
  7. Убедитесь, что вы сняли флажок

    db_denydatareader

    db_denydatawriter

enter image description here

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

Ответ 5

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

Ответ 6

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

Ответ 7

Я решаю свою проблему, делая это. [ВАЖНОЕ ПРИМЕЧАНИЕ: он позволяет расширить (расширить) привилегии для конкретной учетной записи, возможно, больше, чем необходимо для отдельного сценария].

  1. Перейдите в " Обозреватель объектов " в SQL Management Studio.
  2. Разверните Безопасность, затем войдите.
  3. Выберите пользователя, с которым вы работаете, затем щелкните правой кнопкой мыши и выберите Свойства.
  4. В разделе "Выбор страницы" выберите " Роли сервера".
  5. Кликни на сисадмина и сохрани.

Ответ 8

Используя SSMS, я убедился, что у пользователя есть права на подключение как к базе данных, так и к ReportServer.

В конкретной запрашиваемой базе данных в свойствах я сопоставил их учетные данные и включил режим чтения данных и общедоступные разрешения. Кроме того, как заявили другие, я позаботился о том, чтобы не было выбрано никаких блоков для удаления/удаления.

Я не хотел включать владение БД для их отчетов, так как им нужно было только выбрать права доступа.