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

时间:2018-02-12 15:07:51

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

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

  

对象'query_store_runtime_stats',数据库'mssqlsystemresource',架构'sys'上的SELECT权限被拒绝。 (Microsoft SQL Server,错误:229)

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

  

一个或多个数据库无法访问,不会显示在列表中

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

AWS RDS SQL Server向主用户授予dbower

如果您意外撤消了权限或SQL Server RDS中的主用户无法访问还原数据库,则唯一的选择是从控制台重置主用户的密码。

您可能正在考虑重新发送密码?为什么:)

我遇到了这个问题,当我从控制台重置密码时,它会自动授予对该数据库的权限。

答案 1 :(得分:3)

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

<强>原因

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

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

  

一个或多个数据库无法访问,不会显示在列表中

要检查您是否已向主用户授予 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

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