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
以下内容仅作备忘:
- use mytest;//选择数据库
- exec sp_change_users_login @Action='Report';// 查看该数据库的孤立账户
- 重新进行关联
-- 创建登录名 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-服务器主体-无法在当前安全上下文下访问数据库/
微信赞赏支付宝赞赏
发表评论