适用于:SQL Server
本主题说明配置服务器实例以使用证书对数据库镜像的入站连接进行身份验证的步骤。 在可以建立入站连接之前,必须在每个服务器实例上配置出站连接。 有关详细信息,请参阅允许数据库镜像终结点使用证书进行出站连接 (Transact-SQL)。
配置入站连接的过程通常有以下几个步骤:
为其他系统创建登录名。
为该登录名创建一个用户。
获取其他服务器实例的镜像端点的证书。
将该证书与在步骤 2 中创建的用户相关联。
授予对该镜像端点的登录名的 CONNECT 权限。
如果有见证,还必须为其设置入站连接。 这需要在两个合作伙伴上为见证服务器设置登录名、用户和证书,反过来也需要在见证服务器上为这两个合作伙伴设置登录名、用户和证书。
下面的过程详细说明了这些步骤。 对于每个步骤,该过程都提供了一个在名为 HOST_A 的系统上配置服务器实例的示例。 伴随的示例部分说明了在名为 HOST_B 的系统上配置另一服务器实例的步骤(步骤相同)。
为入站镜像连接配置服务器实例(在 HOST_A 上)
为其他系统创建登录名。
下面的示例在 HOST_A 上的服务器实例的 master 数据库中为系统 HOST_B 创建登录名;在此示例中,登录名为
HOST_B_login。 将<password>替换为有效的密码。USE master; CREATE LOGIN HOST_B_login WITH PASSWORD = '<password>'; GO有关详细信息,请参阅CREATE LOGIN(Transact-SQL)。
若要查看此服务器实例上的登录名,可以使用以下 Transact-SQL 语句:
SELECT * FROM sys.server_principals有关详细信息,请参阅 ys.server_principals (Transact-SQL)。
为该登录名创建一个用户。
下面的示例为上述步骤中创建的登录名创建了一个用户
HOST_B_user。USE master; CREATE USER HOST_B_user FOR LOGIN HOST_B_login; GO有关详细信息,请参阅CREATE USER(Transact-SQL)。
若要查看此服务器实例上的用户,可以使用以下 Transact-SQL 语句:
SELECT * FROM sys.sysusers;有关详细信息,请参阅 sys.sysusers (Transact-SQL)。
获取其他服务器实例的镜像端点的证书。
如果配置出站连接时还没有获取远程服务器实例的镜像端点的证书副本,请执行此操作。 若要执行此操作,请按照允许数据库镜像终结点使用证书进行出站连接 (Transact-SQL) 中所述备份该服务器实例上的证书。 将证书复制到其他系统时,请使用安全的复制方法。 必须格外小心地保证所有证书的安全。
有关详细信息,请参阅BACKUP CERTIFICATE(Transact-SQL)。
将该证书与在步骤 2 中创建的用户相关联。
下面的示例将 HOST_B 的证书与它在 HOST_A 上的用户关联。
USE master; CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'C:\HOST_B_cert.cer' GO有关详细信息,请参阅CREATE CERTIFICATE(Transact-SQL)。
若要查看此服务器实例上的证书,请使用以下 Transact-SQL 语句:
SELECT * FROM sys.certificates有关详细信息,请参阅 sys.certificates (Transact-SQL)。
授予对远程镜像端点的登录名的 CONNECT 权限。
例如,若要在 HOST_A 上授予权限,使 HOST_B 上的远程服务器实例能够连接到 HOST_A 上的本地登录名(即连接到
HOST_B_login),请使用以下 Transact-SQL 语句:USE master; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; GO有关详细信息,请参阅GRANT终结点权限(Transact-SQL)。
这将完成对 HOST_B 登录到 HOST_A 所需的证书身份验证的设置。
您现在需要在 HOST_B 上为 HOST_A 执行相同的入站步骤, 下面的示例部分中示例的入站部分说明了这些步骤。
示例
以下示例演示了如何为 HOST_B 配置入站连接。 将 <password> 替换为有效的密码。
注意
此示例使用一个包含 HOST_A 证书的证书文件,该证书由允许数据库镜像终结点使用证书进行出站连接 (Transact-SQL) 中的代码片段创建。
USE master;
--On HOST_B, create a login for HOST_A.
CREATE LOGIN HOST_A_login WITH PASSWORD = '<password>';
GO
--Create a user, HOST_A_user, for that login.
CREATE USER HOST_A_user FOR LOGIN HOST_A_login
GO
--Obtain HOST_A certificate. (See the note
-- preceding this example.)
--Associate this certificate with the user, HOST_A_user.
CREATE CERTIFICATE HOST_A_cert
AUTHORIZATION HOST_A_user
FROM FILE = 'C:\HOST_A_cert.cer';
GO
--Grant CONNECT permission for the server instance on HOST_A.
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO HOST_A_login
GO
如果打算在具有自动故障转移功能的高安全性模式下运行,则必须重复执行相同的设置步骤,为出站连接和入站连接配置见证服务器。
有关创建镜像数据库(包括 Transact-SQL 示例)的详细信息,请参阅为镜像准备镜像数据库 (SQL Server)。
有关建立高性能模式会话的 Transact-SQL 示例,请参阅示例:使用证书设置数据库镜像 (Transact-SQL)。
.NET Framework 安全性
将证书复制到其他系统时,请使用安全的复制方法。 必须格外小心地保证所有证书的安全。
另请参阅
数据库镜像和 Always On 可用性组的传输安全 (SQL Server)
GRANT 端点权限 (Transact-SQL)
设置加密的镜像数据库
数据库镜像端点 (SQL Server)
数据库镜像配置故障排除 (SQL Server)