--=========================================
--在镜像搭建后,在主库服务器上创建登录,并在数据库上建立对应用户,
--数据库中用户被同步到镜像数据库中,但登录是实例级对象,无法同步,
--因此需要手动同步登录到镜像实例上。
 
--当登录未同步到镜像实例上时,如果镜像发生故障转移,则应用程序
--无法访问镜像数据库,镜像数据库上未与登录向管理的用户被称为
--孤立用户
 
--=========================================
--http://msdn.microsoft.com/zh-cn/library/ms174378.aspx
 
sp_change_users_login [ @Action = ] 'action'
    [ , [ @UserNamePattern = ] 'user' ]
    [ , [ @LoginName = ] 'login' ]
    [ , [ @Password = ] 'password' ]
[;]
--Auto_Fix
--将当前数据库的sys.database_principals 系统目录视图中的用户项链接到同名的SQL Server 登录名。如果不存在同名的登录名,将会创建一个。检查Auto_Fix 语句的结果,确认实际链接是否正确。在对安全性较为敏感的情况下,要避免使用Auto_Fix。
 
--如果使用Auto_Fix 时登录名尚不存在,则必须指定user 和password,否则必须指定user,但password 将被忽略。login 必须为NULL。user 必须是当前数据库中的有效用户。不能将另一个用户映射到该登录名。
 
--Report
--列出当前数据库中未链接到任何登录名的用户以及相应的安全标识符(SID)。user、login 和password 必须为NULL 或不指定。
 
--若要使用系统表通过某个查询替换报表选项,请将sys.server_prinicpals 中的条目与sys.database_principals 中的条目进行比较。
 
--Update_One
--将当前数据库中指定的user 链接到现有的SQL Server login。必须指定user 和login。password 必须为NULL 或不指定。
 
 
--=========================================
--镜像切换后
--查看孤立用户
USE REPDB
GO
EXEC sp_change_users_login
@Action = 'REPORT',
@UserNamePattern = NULL,
@LoginName  = NULL,
@Password =  NULL
 
 
--=========================================
--创建登录[T1],并将T1和数据库[REPDB]中的用户[T1]关联
--该方式同样导致镜像两段的登录SID不同,从而导致孤立用户
USE [master]
GO
CREATE LOGIN [T1] WITH PASSWORD=N'T1', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE REPDB
GO
EXEC sp_change_users_login
@Action = 'Update_One',
@UserNamePattern = 'T1',
@LoginName  = 'T1'
 
--=========================================
--使用AUTO_FIX来解决
--该方式同样导致镜像两段的登录SID不同,从而导致孤立用户
USE REPDB
GO
EXEC sp_change_users_login
@Action = 'Auto_Fix',
@UserNamePattern = 'T2',
@Password =  'T2'
 
--=========================================
--推荐做法
--在主库上查询得到需要同步的用户sid
USE master;
select sid,name from syslogins;
 
    --============================================
--在从库上创建登录
exec sp_addlogin
@loginame = 'DB1Login',
@passwd = 'Sql@123',
@sid=0x82873B5AFFEFE54EB4F9CA05C303C9AE
 
--============================================
--MSDN: http://technet.microsoft.com/zh-cn/library/ms173768.aspx
EXEC sp_addlogin [ @loginame = ] 'login'
    [ , [ @passwd = ] 'password' ]
    [ , [ @defdb = ] 'database' ]
    [ , [ @deflanguage = ] 'language' ]
    [ , [ @sid = ] sid ]
    [ , [ @encryptopt = ] 'encryption_option' ]
[;]

Mirror--镜像用户同步的更多相关文章

  1. Mirror--生成用于镜像用户同步的脚本

    USE master GO IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL DROP PROCEDURE sp_hexadecimal GO CREATE PR ...

  2. 阿里云开源 image-syncer 工具,容器镜像迁移同步的终极利器

    为什么要做这个工具? 由于阿里云上的容器服务 ACK 在使用成本.运维成本.方便性.长期稳定性上大大超过公司自建自维护 Kubernets 集群,有不少公司纷纷想把之前自己维护 Kubernetes ...

  3. ceph 006 rbd高级特性 rbd快照 镜像克隆 rbd缓存 rbd增量备份 rbd镜像单向同步

    版本 [root@clienta ~]# ceph -v ceph version 16.2.0-117.el8cp (0e34bb74700060ebfaa22d99b7d2cdc037b28a57 ...

  4. Oracle 数据库--一个用户同步的sql

    用户同步的sql: insert into crm_customer_user ,username,,,,,id, from sys_user where username not in (selec ...

  5. 知方可补不足~SQL数据库用户的克隆,SQL集群的用户同步问题

    我们知道在为sqlserver建立功能数据库时,通过会为库再建立一个登陆名,而这个登陆名时,只用来管理这个数据库,这是安全的,正确的.

  6. Asp.net 与 UCenter 用户同步之实施过程

    在写这篇文章的时候,我还在想,这篇文章也许能给你带来一些收获,但或许会令你更加的迷茫,为什么会这样?因为:1.UCenter虽然足够强大,但正为它的强大,它的不少暗箱操作使得我们望而生畏,我们不害怕出 ...

  7. 网站与phpwind用户同步的方法

    搭建了一个个人网站,希望使用phpwind来完成论坛功能.但很快就发现存在用户同步的问题,我的网站已经有了用户管理功能, phpwind论坛也有.因此用户同步注册,登陆和注销是必须要实现的. 网上说可 ...

  8. 强制TFS用户与计算机(域)用户同步

    默认情况下,添加到域AD组中的账户不会立刻同步到TFS中. TFS每小时与域控制器同步一次,将计算机安全组中的账户添加到TFS中. 但是可以通过下面几种方式强制TFS立刻同步域中的账户: 1. 在TF ...

  9. 根据sys.database_mirroring查询镜像数据库同步状态

    SELECT * FROM sys.database_mirroring WHERE database_id =DB_ID('dbname') 主要查看mirroring_state字段和值和mirr ...

随机推荐

  1. hdu5087——Revenge of LIS II

    Revenge of LIS II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  2. struts2零配置參考演示样例

    <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2 ...

  3. ini 文件操作记要(2): 使用 TMemIniFile

    unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Form ...

  4. Html解析

    相关解析组件: HtmlAgilityPack CsQuery Winista.Text.HtmlParser

  5. Linux环境PHP5.5以上连接SqlServer2008

    linux版本:64位CentOS 6.4 Nginx版本:nginx1.8.0 php版本:php5.5.28 Sqlserver版本:2008 FreeTDS版本:0.95 关于Linux环境安装 ...

  6. 走进ELK原理

    日志的分析在联调和后期维护是非常重要. 今天让我们进入ELK...让我们一起感受这个强大的日志收集,日志分析存储,日志查询界面化显示的震撼效果吧. Elasticsearch是个开源分布式搜索引擎,它 ...

  7. 【RF库Collections测试】Insert Into List

    Name:Insert Into ListSource:Collections <test library>Arguments:[ list_ | index | value ]Inser ...

  8. cocos2d-x游戏引擎核心之一——坐标系

    cocos2d-x:OpenGL坐标系.绝对坐标系.相对坐标系.屏幕坐标系 cocos2d-x采用的是笛卡尔平面坐标系,也就是平面上两条垂直线构成的坐标系,平面上任意一点都可以用(x,y)来表示. ( ...

  9. cocos2d-x游戏引擎核心之八——多线程

    一.多线程原理 (1)单线程的尴尬 重新回顾下 Cocos2d-x 的并行机制.引擎内部实现了一个庞大的主循环,在每帧之间更新各个精灵的状态.执行动作.调用定时函数等,这些操作之间可以保证严格独立,互 ...

  10. Bootstrap篇:弹出框和提示框效果以及代码展示

     前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你 ...