2010-05-25 2 views
1

У меня есть база данных, с которой мне нужно подключиться и выбрать. У меня есть SQL Login, назовем его myusername. Когда я использую следующий, не ВЫБРАТЬ разрешение не появится:SQL Select Permissions

SELECT * FROM fn_my_permissions ('dbo.mytable', 'OBJECT') 
GO 

Несколько раз я пытался что-то вроде:

USE mydatabase 
GO 

GRANT SELECT TO myusername 
GO 

GRANT SELECT ON DATABASE::mydatabase TO myusername 
GO 

GRANT SELECT ON mytable TO myusername 
GO 

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

В качестве примечания я сделал двойной уверен, что это правильный пользователь, исправлена ​​база данных, и я уже пробовал предоставить разрешения выбора уровня таблицы. До сих пор я продолжаю получать ошибку:

SELECT permission denied on object 'mytable', database 'mydatabase', schema 'dbo'. 

Любые идеи, что мне не хватает? Заранее спасибо.

EDIT/UPDATE:

По правой кнопкой мыши на SQL пользователя в среде SQL Server Management Studio 2008, я обнаружил, каждый роли базы данных проверяется, в том числе и db_denydatareader db_datareader ... может это блокирует мою способность давать разрешение на уровне базы данных? Если это так, какова цель db_denydatareader? Мне кажется глупым иметь «DENY», который нельзя просмотреть при запросе разрешений.

РЕЗЮМЕ: Конечно, это исправлено.

+0

Вы должны опубликовать свой EDIT/UPDate в качестве принятого ответа =) – ajdams

+0

Вам нужна ваша dba, чтобы исправить ваши права. – HLGEM

ответ

3

В SSMS - в Базах данных -> mydatabase -> Безопасность -> Пользователи -> myusername, щелкните правой кнопкой мыши имя пользователя, выберите свойства. Под членством в роли роли в базе данных убедитесь, что db_denydatareader не проверен, так как это переопределит все разрешения, которые вы предоставили.

Знал, что это было что-то простое. :)

0

Вы пытались переподключиться к этой учетной записи пользователя SQL?