设置用于进行数据库镜像的登录帐户

为使两个服务器实例可以在数据库镜像会话中通信,每个实例的登录帐户都要具有访问另一实例的权限。每个登录帐户还要具有可以连接到另一实例的数据库镜像端点的权限。有关此端点的信息,请参阅数据库镜像端点

主题内容:

  • 创建用户登录名

  • 授予连接权限

  • 相关任务

创建用户登录名

不能镜像 mastermsdb 系统数据库中的信息。为了使所有数据库用户都能更有效地使用角色切换功能,主体服务器实例上具有连接权限的用户登录名必须同时位于镜像服务器实例上。

此要求的影响取决于镜像伙伴是否使用相同的域用户帐户运行:

  • 如果伙伴使用相同的域用户帐户运行,则正确的用户登录名将自动存在于全部两个 master 数据库中。这样可简化数据库的安全配置并建议这样做。

  • 如果伙伴服务器实例使用不同的用户帐户运行,则必须在镜像服务器实例上手动重新生成主体服务器实例上的用户登录名。为了避免在角色切换后出现孤立用户,您应当定期维护主体数据库和镜像数据库上的同一组用户登录名。但是,如果在角色切换后出现任何孤立用户,则可以在那时设置这些用户的登录名。

为不同帐户创建登录帐户

如果两个服务器实例以不同的帐户运行,则系统管理员必须使用 CREATE LOGIN Transact-SQL 语句为远程实例的启动服务帐户创建登录帐户,远程实例位于每个服务器实例的 master 数据库的 syslogins 表中。有关详细信息,请参阅 CREATE LOGIN (Transact-SQL)

重要说明重要提示

如果使用非域帐户运行 SQL Server,则必须使用证书。有关详细信息,请参阅使用数据库镜像证书

例如,对于在 loginA 下运行的服务器实例 sqlA,若要连接到在 loginB 下运行的服务器实例 sqlB,loginA 必须在 sqlB 的 syslogins 表中,且 loginB 必须在 sqlA 的 syslogins 表中。此外,对于包含见证服务器实例 (sqlC) 且三个服务器实例运行在不同域帐户下的数据库镜像会话,必须创建下列登录帐户:

所在实例...

创建登录帐户并将连接权限授予...

sqlA

sqlB 和 sqlC

sqlB

sqlA 和 sqlC

sqlC

sqlA 和 sqlB

注意注意

可以使用计算机帐户(而不是域用户)连接网络服务帐户。如果使用的是计算机帐户,则必须将其作为用户添加到其他服务器实例上。

授予连接权限

在服务器实例上创建登录帐户后,必须授予登录帐户连接到服务器实例的数据库镜像端点的权限。系统管理员使用 GRANT Transact-SQL 语句授予连接权限。有关详细信息,请参阅 GRANT (Transact-SQL)

注意注意

有关此端点的信息,请参阅数据库镜像端点