还原数据库后,用户名出错,不能修改用户属性
在本地调试的一个数据库还原到服务器上后发现数据库的用户名跟着数据库过去了(废话,本来就是数据库系统表中的一条记录,能不过去吗?), 但登录名没过去, 就随手想创建一个登录名, 以给该用户使用的, 但创建登录名时发现可能是出于安全考虑吧, 创建的登录名不允许用来操作该数据库. 报"用户、组或角色'XXX'在当前数据库中已存在
想手工把登录名与数据库中的用户名进行关联, 系统不让; 想删除数据库中的用户再重建, 竟然也不让删……
想手工把登录名与数据库中的用户名进行关联, 系统不让; 想删除数据库中的用户再重建, 竟然也不让删……
最终发现这种情况叫"存在孤立用户", 其实用系统的一个存储过程sp_change_users_login就可以搞定的:
解释一下参数:
ABC, 就不用说了, 想进行操作的数据库呗
update_one, 表示只对一个用户进行操作
xxx与xxx, 则分别是SQL Server的登录名与数据库中的用户名
sp_change_users_login的更详细的用法可以参考SQL Server的联机帮助