对象'Users',数据库'XXX',架构'dbo'上的SELECT权限被拒绝

时间:2013-10-12 12:12:55

标签: sql-server azure-sql-database

我将数据库从SQL Server 2012移动到Azure。我不想使用用户master,因此我创建了一个用户test。这就是我为Azure上的数据库XXX所做的:

create user test from login test with default_schema=[dbo]
exec sp_addrolemember 'db_owner','test'

我检查过,我感兴趣的数据库对象都在模式dbo中。表Users位于架构dbo中。

我的Web项目中的连接字符串以test作为登录名。它会生成错误消息:

The SELECT permission was denied on the object 'Users', database 'XXX', schema 'dbo'

错误消息的含义是什么?如何让用户test访问数据库XXX?

9 个答案:

答案 0 :(得分:60)

我认为问题在于用户有拒绝权限。当您创建的用户没有足够的权限访问数据库中的表时,会出现此错误。请将权限授予用户以获得所需内容。

GRANT 用户特定权限,例如该数据库中表的SELECT,INSERT,UPDATE和DELETE。

答案 1 :(得分:23)

授予选择权限的语法是:

USE YourDB;

GRANT SELECT ON dbo.functionName TO UserName;

答案 2 :(得分:16)

这是我在面对问题时能够解决问题的方法

  1. 启动SQL Management Studio。
  2. 展开服务器节点(在“对象资源管理器”中)。
  3. 展开“数据库”节点,然后展开您尝试使用特定用户访问的特定数据库。
  4. 展开数据库的“安全性”节点下的“用户”节点。
  5. 右键单击特定用户,然后单击“属性”。你会得到一个对话框。
  6. 确保用户是db_owner组的成员(请在使用此路径之前阅读以下注释)以及使用该视图进行的其他必需更改。 (我在2016年使用过它。不确定特定对话框在其他版本中的外观如何,因此不具体)

答案 3 :(得分:10)

  1. 打开SQL Management Studio
  2. 扩展数据库
  3. 展开“安全性”文件夹
  4. 扩展“用户”
  5. 右键单击用户(尝试执行查询的用户)
  6. 确保取消选中

    db_denydatareader

    db_denydatawriter

enter image description here

这应该不用多说,而只是授予用户所需的权限。一个简单的懒惰修补程序是像我一样检查db_owner,但这不是最佳的安全实践。

答案 4 :(得分:1)

需要为该用户授予权限

答案 5 :(得分:0)

检查数据库的空间。当空间增加与数据库空间相比时,会出现此错误。

答案 6 :(得分:0)

我解决了这个问题。 [重要说明:它允许升级(扩展)特权帐户的权限,可能超过单个方案所需的权限]。

  1. 转到' 对象资源管理器' SQL Management Studio。
  2. 展开安全,然后登录
  3. 选择您正在使用的用户,然后选择右侧clic并选择属性
  4. 选择页面中,转到服务器角色
  5. Clic on sysadmin 并保存。

答案 7 :(得分:0)

使用SSMS,我确保用户在数据库和ReportServer上都具有连接权限。

在要查询的特定数据库的属性下,我映射了它们的凭据并启用了数据读取器和公共权限。另外,正如其他人所说的-我确保没有选择denyread / denywrite框。

我不想为他们的报告启用数据库所有权,因为他们只需要具有选择权限。

答案 8 :(得分:-2)

可能是您的Plesk面板或其他面板订阅已过期...。请检查订阅结束。

相关问题