sqlserver 服务器主体 无法在当前安全上下文下访问数据库,错误916

参考地址: https://www.cnblogs.com/chendaoyin/archive/2013/12/23/3487182.html

https://blog.csdn.net/ybhjx/article/details/77345106

一般是使用还原bak数据库文件后可能存在这个问题,可以连接到数据库但是无法打开数据库的内容。以下操作命令请以sa用户或本地验证方式进行登录执行 。(如果本地可以登录sql,远程不能登陆sql的话,记得开服务器的1433端口,参考 https://jingyan.baidu.com/article/fd8044facfbdd45031137ab7.html

查看看到哪些数据库开了trustworthy属性,命令如下:SELECT name, database_id, is_trustworthy_on FROM sys.databases,默认就msdb开的有。

要打开数据库trustworthy属性,命令如下: 
ALTER DATABASE 数据库名 SET TRUSTWORTHY ON

授权用户访问,命令如下:

ALTER AUTHORIZATION ON DATABASE::数据库名 TO [用户名]


第二中可能解决错误916的方法是,使用本地账户登录后在顶部工具栏选择【查看】--【对象资源管理器详细信息】,然后在左侧【对象资源管理器】-【数据库】,然后再在右侧的【对象资源管理器详细信息】-【名称】右键取消勾选【策略运行状态】和【排列规则】

如果上面方法还没能解决问题可以参考: https://blog.csdn.net/kk185800961/article/details/43309883

以下内容仅作备忘:

  1. use mytest;//选择数据库
  2. exec sp_change_users_login @Action='Report';// 查看该数据库的孤立账户
  3. 重新进行关联
--	创建登录名
use master;
create login [db_user] with password = '123456';
go
 
--	对孤立用户连接到现有的登录名
use mytest;
exec sp_change_users_login 
	@action='update_one', 
	@usernamepattern='db_user', --数据库孤立用户
	@loginname='db_user'; --关联到sql server登录名
go
 
--	也可以再次修改密码
use master 
go
sp_password @old=null, @new='654321', @loginame='db_user';
go

--注意以上语句最好去掉注释后执行

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/sqlserver-服务器主体-无法在当前安全上下文下访问数据库/

赞赏

微信赞赏支付宝赞赏

发表评论