sql-server - 主用户在 SQL Server(rds 实例)上意外丢失了它的权限

标签 sql-server amazon-web-services amazon-rds

SQL Server 主用户意外失去了他的权限。当我尝试访问我的数据库表时,我在 SSMS 上收到以下错误:

The SELECT permission was denied on the object 'query_store_runtime_stats', database 'mssqlsystemresource', schema 'sys'. (Microsoft SQL Server, Error: 229)



如果我尝试向主用户授予权限,则在映射凭据(安全 > 登录 > Masteruser > 属性)时会出现以下错误:

One or more databases are inaccessible and will not be displayed in list



丢失的数据库是存储我的表/过程的数据库。最终用户也无法访问数据库。

我曾尝试使用 sql 查询授予权限,但即使该权限也被禁用。

唯一能够使用该数据库的用户是我之前创建的只读用户。

我在 Amazon AWS 控制台上更改了主密码,但这并没有解决我的问题。

我应该怎么做才能解决这个问题?

最佳答案

联系 AWS 支持后,我能够解决我的问题。

原因

我的问题的原因是 db_denydatawriter 和 db_denydatareader 被错误地授予主用户。

因此,主用户对您的数据库没有读/写权限,当尝试授予或撤销对 SSMS 的权限时,用户映射将无法列出数据库,因为 SSMS 无法再读取属性并将显示错误:

One or more databases are inaccessible and will not be displayed in list



要检查您是否已将 db_denydatawriter 或 db_denydatareader 授予您的主用户,请尝试以下命令:
use [YourDatabaseName]
go
sp_helpuser

更改主密码无济于事,因为这将授予 db_owner 权限,但不会删除拒绝权限。

解决方案

使用以下命令删除拒绝权限:
USE [database-name]
GO
ALTER ROLE [db_denydatareader] DROP MEMBER [master-user-name]
GO
ALTER ROLE [db_denydatawriter] DROP MEMBER [master-user-name]
GO

它对我有用,希望它有所帮助!

关于sql-server - 主用户在 SQL Server(rds 实例)上意外丢失了它的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749465/

相关文章:

SQL日期比较问题

sql-server - 单个 SQL Server 表可以存储的最大行数是多少?

amazon-web-services - elasticsearch-cloud-aws 插件不适用于 IAM 角色

javascript - 通过浏览器访问 DynamoDB

amazon-web-services - 将 Amazon AMI 移动到另一个账户

database - 如何计算 Amazon RDS 上的小时/月使用量和定价?

mysql - AWS MySQL 连接经常超时

sql-server - 查看链接服务器依赖关系sql server 2008

sql - 哪个更好 : Bookmark/Key Lookup or Index Seek

amazon-web-services - 为什么 CloudFormation 不创建我的数据库?