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

对于两个服务器实例连接到彼此的数据库镜像终结点,每个实例的登录帐户需要访问到另一个实例。 此外,每个登录帐户都需要对其他实例的数据库镜像端点的连接权限。

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

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

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

    重要

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

为其他帐户创建登录名

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

重要

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

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

在实例上... 为 ... 创建登录名并授予连接权限...
sqlA sqlB 和 sqlC
sqlB sqlA 和 sqlC
sqlC sqlA 和 sqlB

注释

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

授予连接权限

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

相关任务

另请参阅

数据库镜像端点 (SQL Server)
数据库镜像配置疑难解答 (SQL Server)
AlwaysOn 可用性组配置疑难解答 (SQL Server)