SQL选择权限

SQL选择权限,sql,sql-server,tsql,select,permissions,Sql,Sql Server,Tsql,Select,Permissions,我有一个需要连接和选择的数据库。我有一个SQL登录名,我们称之为myusername。使用以下选项时,不会显示“选择”权限: 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 SELE

我有一个需要连接和选择的数据库。我有一个SQL登录名,我们称之为myusername。使用以下选项时,不会显示“选择”权限:

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权限缺少什么简单的东西

作为说明,我再次确认它是正确的用户、正确的数据库,并且我已经尝试授予表级select权限。到目前为止,我一直得到错误:

SELECT permission denied on object 'mytable', database 'mydatabase', schema 'dbo'.
你知道我错过了什么吗?提前谢谢

编辑/更新:

在SQLServerManagementStudio 2008中右键单击SQL用户时,我发现检查了每个数据库角色,包括db_denydatareader和db_datareader。。。这可能会阻止我在数据库级别授予权限吗?如果是这样,db_denydatareader的目的是什么?在我看来,在查询权限时有一个无法查看的“拒绝”是愚蠢的

总结:
果然,这解决了问题。

您尝试过重新连接该SQL用户帐户吗?

在SSMS中的“数据库-->我的数据库-->安全-->用户-->我的用户名”下,右键单击用户名,选择“属性”。在“数据库角色成员身份”下,确保未选中db_denydatareader,因为这将覆盖您授予的任何权限


我知道这很简单

您应该将您的编辑/更新发布为接受的答案=)您需要dba来修复您的权限。