SQLServer AlwaysOn在辅助副本创建只读账号


一、主副本都创建只读用户的情况:

在主副本创建用户ze_bi:通过TSQL查询SID

select sid from sys.sql_logins where name = 'ze_bi'

查询出主副本sid后,在辅助副本上创建ze_bi:create login ze_bi  with password='passwd', sid=主副本查询的sid

二、在辅助副本创建只读账号的情况:

备库创建只读用户时,出现报错信息3906:

 问题定位:master和业务库的sid不同,造成不能映射业务数据库

select * from sys.server_principals where name='ze_bi'
0x59E000C5F5C7CE43801980D9C35F1402

USE  PMDB
select * from sys.database_principals where name='ze_bi'
0x20E605EFA5FD5842AB5B6A12F46DBF1B

USE LogDB
select * from sys.database_principals where name='ze_bi'
0x20E605EFA5FD5842AB5B6A12F46DBF1B

在安全--删除掉登录名ze_bi,通过TSQL重建ze_bi
create login ze_bi  with Password='ze_bi',sid=0x20E605EFA5FD5842AB5B6A12F46DBF1B

这样就可以解决了。

 当重建用户清理用户的时候,提示用户已经登录,不允许删除

SELECT session_id FROM sys.dm_exec_sessions WHERE login_name = 'srv_clinical'

kill session_id;之后重建