107

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

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

我查了一下,我感兴趣的数据库对象都在 schema 中dbo。该表Users在 schema 中dbo

我的网络项目中的连接字符串test作为登录名。它产生错误消息:

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

错误消息是什么意思,我该怎么做才能让用户test访问数据库 XXX?

4

9 回答 9

105
  1. 打开 SQL 管理工作室
  2. 扩展您的数据库
  3. 展开“安全”文件夹
  4. 展开“用户”
  5. 右键单击用户(尝试执行查询的用户)并选择Properties.
  6. 选择页面Membership
  7. 确保取消选中

    db_denydatareader

    db_denydatawriter

在此处输入图像描述

这应该不言而喻,但只授予用户需要的权限。一个简单的懒惰修复方法是db_owner像我一样检查,但这不是最佳安全实践。

于 2018-08-14T18:35:37.347 回答
84

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

在该数据库中的表上授予用户特定权限,例如 SELECT、INSERT、UPDATE 和 DELETE。

于 2013-10-12T12:16:17.903 回答
41

授予对特定表的选择权限的语法:

USE YourDB;

GRANT SELECT ON dbo.functionName TO UserName;

授予对数据库中所有表的选择权限:

USE YourDB;

GRANT SELECT TO UserName;
于 2015-05-19T20:56:21.500 回答
19

这就是我遇到问题时能够解决问题的方式

  1. 启动 SQL 管理工作室。
  2. 展开服务器节点(在“对象资源管理器”中)。
  3. 展开数据库节点,然后展开您尝试使用特定用户访问的特定数据库。
  4. 展开数据库的安全节点下的用户节点。
  5. 右键单击特定用户,然后单击“属性”。你会得到一个对话框。
  6. 确保用户是 db_owner 组的成员(请在使用 go this path 之前阅读下面的评论)并使用视图进行其他必要的更改。(我在 2016 年使用了这个。不确定特定对话框在其他版本中的样子,因此不具体)
于 2017-01-24T07:10:17.323 回答
0

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

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

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

于 2019-03-26T21:42:48.653 回答
-1

需要为该用户授予权限

于 2014-10-15T13:28:03.763 回答
-1

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

于 2015-06-24T06:09:36.583 回答
-1

我这样做解决了我的问题。[重要提示:它允许对特定帐户进行升级(扩展)权限,可能超过个别场景所需的权限]。

  1. 转到 SQL Management Studio 的“对象资源管理器”。
  2. 展开安全,然后登录
  3. 选择您正在使用的用户,然后右键单击并选择Properties Windows
  4. Select a Page中,转到Server Roles
  5. 单击系统管理员并保存。
于 2017-11-22T14:08:07.073 回答
-2

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

于 2020-03-06T04:04:29.423 回答