设置数据库镜像或 AlwaysOn 可用性组的登录帐户 (SQL Server)

为了使两个服务器实例能够连接到彼此的数据库镜像端点,每个实例的登录帐户都要具有访问另一实例的权限。 每个登录帐户还要具有可以连接到另一实例的数据库镜像端点的权限。

此要求的影响取决于服务器实例是否使用相同的域用户帐户运行:

  • 如果服务器实例使用相同的域用户帐户运行,则正确的用户登录名将自动存在于全部两个 master 数据库中。 这样可简化数据库镜像和 AlwaysOn 可用性组的安全配置。

  • 如果服务器实例使用不同的用户帐户运行,则在承载镜像服务器的服务器实例上或承载辅助副本的每个服务器实例上都必须手动复制承载主体服务器或主要副本的服务器实例上的用户登录名。 有关详细信息,请参阅本主题后面的为不同帐户创建登录名和授予连接权限。

    安全说明安全说明

    若要创建更安全的环境,请考虑对每个服务器实例使用单独的域帐户。

为不同帐户创建登录名

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

重要说明重要提示

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

例如,对于在 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)

相关任务

请参阅

概念

数据库镜像端点 (SQL Server)

数据库镜像配置故障排除 (SQL Server)

解决 AlwaysOn 可用性组配置问题 (SQL Server)