我将数据库从 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
中。
我的网络项目中的连接字符串将 test
作为登录名。它产生错误消息:
The SELECT permission was denied on the object 'Users', database 'XXX', schema 'dbo'
错误消息是什么意思?我该怎么做才能让用户test
访问数据库XXX?
最佳答案
- 打开 SQL Management Studio
- 扩展您的数据库
- 展开“安全”文件夹
- 展开“用户”
- 右键单击用户(尝试执行查询的用户)并选择
属性
。 - 选择页面
成员(member)
。 确保取消选中
db_denydatareader
db_denydatawriter
这应该是不言而喻的,但只授予用户需要的权限。一个简单的懒惰修复方法是像我一样检查db_owner
,但这不是最佳的安全实践。
关于sql-server - 对对象 'Users'、数据库 'XXX'、架构 'dbo' 的 SELECT 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19334041/