我将数据库从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?
答案 0 :(得分:60)
我认为问题在于用户有拒绝权限。当您创建的用户没有足够的权限访问数据库中的表时,会出现此错误。请将权限授予用户以获得所需内容。
GRANT 用户特定权限,例如该数据库中表的SELECT,INSERT,UPDATE和DELETE。
答案 1 :(得分:23)
授予选择权限的语法是:
USE YourDB;
GRANT SELECT ON dbo.functionName TO UserName;
答案 2 :(得分:16)
这是我在面对问题时能够解决问题的方法
答案 3 :(得分:10)
确保取消选中
db_denydatareader
db_denydatawriter
这应该不用多说,而只是授予用户所需的权限。一个简单的懒惰修补程序是像我一样检查db_owner
,但这不是最佳的安全实践。
答案 4 :(得分:1)
需要为该用户授予权限
答案 5 :(得分:0)
检查数据库的空间。当空间增加与数据库空间相比时,会出现此错误。
答案 6 :(得分:0)
我解决了这个问题。 [重要说明:它允许升级(扩展)特权帐户的权限,可能超过单个方案所需的权限]。
答案 7 :(得分:0)
使用SSMS,我确保用户在数据库和ReportServer上都具有连接权限。
在要查询的特定数据库的属性下,我映射了它们的凭据并启用了数据读取器和公共权限。另外,正如其他人所说的-我确保没有选择denyread / denywrite框。
我不想为他们的报告启用数据库所有权,因为他们只需要具有选择权限。
答案 8 :(得分:-2)
可能是您的Plesk面板或其他面板订阅已过期...。请检查订阅结束。