SQLSERVER权限异常小记

  前一段突然发现原来能正常使用的ssms 在连接 sqlserver 后所有库都打不开了.无论打开哪个库都提示无法访问数据库xxx(objectExplorer).如图:

SQLSERVER权限异常小记
初步怀疑是 ssms 的哪个组件损坏了, 那就用命令打开吧.熟练的新建查询, 快速的敲下了如下代码:

use AdventureWorks
go

居然还是报错!无法在当前安全上下文下访问数据库,如图:
SQLSERVER权限异常小记
竟然提示没有权限.my god!我可是用的 administrator 啊. windows下还有什么比这个权限更大的用户吗?先查一番当前账号是不是在管理员组.
SQLSERVER权限异常小记
实在是没有问题啊. 用windows验证怎么会没有库的权限? 这可是微软推荐的连接方式啊. 好吧,我们一步一步来:

  1. 查下sqlserver中显示的 administrator 的权限.
    操作方法是: 安全性,登录名,右键 administrator 属性,如图:

SQLSERVER权限异常小记

  1. 检查服务器角色,如图:
    SQLSERVER权限异常小记

哦.管理员居然没有 sysadmin 角色的权限?怪不得报错了. 那就勾上吧.
SQLSERVER权限异常小记
又报错!别急,咱们还有一招,当然是用 sa 使用 sqlserver 验证登录,然后给administrator 授予这个权限了. 可惜本人记性不好, 平时也用 windows 验证,忘了 sa 的密码了. 在这里能改吗? 我们试一下:
sa账号,右键,属性,更改密码,确定.
SQLSERVER权限异常小记
当然是又报错了.一个只有 public 权限的角色当然是绝不可能修改管理员的密码的. 那怎么办呢?
3.天无绝人之路.使出我们的终极大法.

  • 关闭sqlserver服务,关闭ssms, 以单用户模式启动,如图:
    SQLSERVER权限异常小记
  • 用 sqlcmd 连接实例.默认仍走windows验证.如图:
    SQLSERVER权限异常小记
  • 创建一个新的登录名,并加入到 sysadmin 角色成员中
    SQLSERVER权限异常小记
  • 关闭单用户模式,以正常模式启动,如图:
    SQLSERVER权限异常小记

注: mssqlserver 为安装时的实例名称

  • 用刚创建的账号 supersa, 使用 sqlserver验证登录ssms, 如图:
    SQLSERVER权限异常小记
  • 先检查下自己的权限,看是不是 sysadmin, 如图:
    SQLSERVER权限异常小记
  • 确认无误,我们就大胆修改 administrator 的权限吧.
    SQLSERVER权限异常小记

这次终于成功了.

  • 用 administrator 账号再登录一次试试看.
    SQLSERVER权限异常小记

这时候发现所有的库都可以正常打开了.如图:
SQLSERVER权限异常小记
其实万变不离其宗,乍一看确实吓了一跳,最高管理员居然没有权限,但任何异常都可能发生,只要掌握其验证原理,就不难解决了.

上一篇:RDS for mysql 5.7 巧用 tee 命令导出慢查询明细


下一篇:我所知道的前端组件化与模块化