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;之后重建