SQL Server 备份还原造成孤立用户的问题

摘要:
SQLSERVER调用登录名和用户名映射之间的关系。使用登录名登录SQLSERVER后,当您访问每个数据库时,SQLSERVER将自动查询此数据库中是否有与此登录名关联的用户名。如果有,您可以使用此用户的权限访问此数据库。生成孤立帐户有两种方法:1.在其他计算机上还原备份的数据库;2.重新安装系统或SQLSERVER后,仅恢复用户库。解决方案是使用sp_change_users_Login。

首先需要了解一下SQL Server登录名和用户名的却别:

登录名:服务器方的一个实体,使用一个登录名只能进入服务器,但是不能让用户访问服务器中的数据库资源。每个登录名的定义存放在master数据库的syslogins表中。
用户名:一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。用户定义信息存放在每个数据库的sysusers表中。
SQLSERVER把登录名与用户名的关系称为映射。用登录名登录SQLSERVER后,在访问各个数据库时,SQLSERVER会自动查询此数据库中是否存在与此登录名关联的用户名,若存在就使用此用户的权限访问此数据库。

孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的syslogins中却没有对应的记录。

孤立帐户的产生一般是一下两种:
1.将备份的数据库在其它机器上还原;
2.重装系统或SQL SERVER之后只还原了用户库

解决方法是使用sp_change_users_login来修复。

sp_change_users_login的用法有三种

用法1:
exec sp_change_users_login 'REPORT'
列出当前数据库的孤立用户

用法2:

exec sp_change_users_login 'AUTO_FIX','用户名'

可以自动将用户名所对应的同名登录添加到syslogins中

或者

sp_change_users_login 'Auto_Fix', 'test', NULL, 'testpassword'

来创建一个登录名为test,密码为testpassword的用户与之对应。


用法3:
exec sp_change_users_login 'UPDATE_ONE','用户名','登录名'
将用户名映射为指定的登录名。

注:(用法2 和 用法3 的区别是:

  用法2会自动根据用户名创建登录名,

  用法3需要自己首先创建一个登录名。)

免责声明:文章转载自《SQL Server 备份还原造成孤立用户的问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇GIT 的多人协作从O365中获取users到D365中 使用flow下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Redis缓存设计和问题处理

工作中做的所有项目都用到了redis,对其设计思路和问题处理做个总结。 key设计:可读性高,定义简洁,不包含特殊字符,一般使用:分隔,比如user:info:1000001,表示id为1000001的缓存key value设计:字符串不宜过长,字符串最大是512M,一般来说超过10k我们就认为他是bigkey,集合,有序集合,哈希,个数不宜太多,比如存储...

Android 中 SQLite 数据库的查看

当 SQLite 数据库创建完成后,如何查看数据库的内容呢?如果直接使用 File Explorer 查看,最多只能看到 database 目录下出现了一个BookStore.db 文件,Book 表是无法通过 File Explorer 看到的。 我将简单介绍两种 SQLite 数据库的查看方式,来对数据库和表的创建情况进行检查。 -----------...

根据前端时间范围-后端进行时间范围数据库查询

一、场景 从前端获取时间范围 时间范围作为参数传递给后端 后端将时间范围参数转换datetime类型 根据时间范围进行数据库查询 二、功能实现 前端获取时间范围 参考资料: https://blog.csdn.net/lianzhang861/article/details/80422513 原生HTML获取时间范围 <form act...

四、 MySQL客户端工具及SQL讲解

一.客户端命令介绍 mysql客户端命令 ​ 1、用于数据库的连接管理 1) 连接(略) 2) 管理: 3)接收用户的SQL语句 #MySQL接口自带的命令 h 或 help 或? 查看帮助,查看mysql的管理命令 G 格式化查看数据(结果以key:value形式展示) T 或 tee...

Oralce表空间创建和管理

1.表空间的概述    1.表空间是数据库的逻辑组成部分。     2.从物理上讲,数据库数据存放在数据文件中;     3.从逻辑上讲,数据库是存放在表空间中,表空间由一个或者多个数据文件组成。   2.oracle的逻辑组成    1.oracle 的逻辑结构包含 表 空间 段 区 块         2.数据库是由表空间构成,表空间又是有段构成,段是...

记一次Hvv中遇到的API接口泄露而引起的一系列漏洞

引言 最近朋友跟我一起把之前废弃的公众号做起来了,更名为鹿鸣安全团队,后面陆续会更新个人笔记,有趣的渗透经历,内网渗透相关话题等,欢迎大家关注 前言 Hvv中的一个很有趣的漏洞挖掘过程,从一个简单的API泄露到一系列漏洞。这次的经历更让我体会到了细心的重要性。 挖掘起始 Hvv中拿到了一大堆的资产,有IP和URL的,我一般会先去手动挖掘已经给了的URL资产...