--自己很愚蠢的做法,以为直接删除数据库用户名,再从新创建用户登录名和数据库用户名。 --自己以为可以直接创建与之原先一样的数据库登录名就可以 --但这些操作是不起作用的 --原因 --当映射孤立用户时,主从数据库中的SID将分配给孤立用户,所以每次一个数据库备附加或者还原时,--SID在SQL Server 登录名和数据库用户之间都存在差异。 --预先了解有几个孤立用户 use adventureWorks go sp_change_users_login @Action='Report' go --第一步:新建 数据库登录名(可以与数据库用户名相同,也可以不同。) --要首先新建数据登录名,是因为往往备份还原的数据只会含有数据库用户名,而不含有数据库登录名 --'TestUser2' 是你将要创建的数据库登录名,'pwd'为数据库登录密码 use adventureWorks exec sp_change_users_login 'Auto_Fix','TestUser2',null,'pwd' --第二步:把数据库用户名映射到数据库登录名上 --(1)如果用户名和登录名相同 use adventureWorks go exec sp_change_users_login 'Auto_Fix','TestUser2' --(2)如果用户名和登录名不同 --exec sp_change_users_login @Action='update_one',@UserNamePattern='TestUser1',@LoginName='TestUser1' --第三步:检查是否映射成功 /* 这个两个语句 是比较 登录名.SID与用户名.SID 登录名.SID==用户名.SID ==>我们的操作就成功了。 登录名.SID!=用户名.SID 任然是孤立用户 */ --SQL Server 登录名 的SID select name,sid from sys.syslogins where [name]='TestUser2' --SQL Server 数据库用户名 的SID select name,sid from AdventureWorks..sysusers where name='TestUser2'