此示例演示使用 Windows 身份验证创建与见证服务器的数据库镜像会话所需的所有阶段。 本主题中的示例使用 Transact-SQL。 请注意,作为使用 Transact-SQL 步骤的替代方法,可以使用“配置数据库镜像安全向导”进行数据库镜像设置。 有关详细信息,请参阅使用 Windows 身份验证建立数据库镜像会话(SQL Server Management Studio)。
先决条件
此示例使用 AdventureWorks 示例数据库,该数据库默认使用简单的恢复模式。 若要对此数据库使用数据库镜像,必须对其进行更改才能使用完整恢复模式。 若要在 Transact-SQL 中执行此作,请使用 ALTER DATABASE 语句,如下所示:
USE master;
GO
ALTER DATABASE AdventureWorks
SET RECOVERY FULL;
GO
有关在 SQL Server Management Studio 中更改恢复模式的信息,请参阅 查看或更改数据库(SQL Server)的恢复模式。
权限
需要具有数据库的 ALTER 权限和 CREATE ENDPOINT 权限,或者是 sysadmin 固定服务器角色的成员。
示例:
在此示例中,两个伙伴和见证服务器是三台计算机系统上的默认服务器实例。 三个服务器实例运行相同的 Windows 域,但该用户帐户(用作启动服务帐户)对于示例的见证服务器实例不同。
下表汇总了此示例中使用的值。
| 初始镜像角色 | 主机系统 | 域用户帐户 |
|---|---|---|
| 校长 | PARTNERHOST1 | <Mydomain>\<dbousername> |
| 镜像 | PARTNERHOST5 | <Mydomain>\<dbousername> |
| 见证 | WITNESSHOST4 | <Somedomain>\<witnessuser> |
在主体服务器实例上创建终结点(PARTNERHOST1上的默认实例)。
CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=PARTNER) GO --Partners under same domain user; login already exists in master. --Create a login for the witness server instance, --which is running as Somedomain\witnessuser: USE master ; GO CREATE LOGIN [Somedomain\witnessuser] FROM WINDOWS ; GO -- Grant connect permissions on endpoint to login account of witness. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Somedomain\witnessuser]; --Grant connect permissions on endpoint to login account of partners. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Mydomain\dbousername]; GO在镜像服务器实例上创建终结点(PARTNERHOST5 上的默认实例)。
CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=ALL) GO --Partners under same domain user; login already exists in master. --Create a login for the witness server instance, --which is running as Somedomain\witnessuser: USE master ; GO CREATE LOGIN [Somedomain\witnessuser] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account of witness. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Somedomain\witnessuser]; --Grant connect permissions on endpoint to login account of partners. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Mydomain\dbousername]; GO在见证服务器实例上创建终结点(WITNESSHOST4 上的默认实例)。
CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=WITNESS) GO --Create a login for the partner server instances, --which are both running as Mydomain\dbousername: USE master ; GO CREATE LOGIN [Mydomain\dbousername] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account of partners. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Mydomain\dbousername]; GO创建镜像数据库。 有关详细信息,请参见准备镜像数据库用于镜像 (SQL Server)。
在PARTNERHOST5上的镜像服务器实例上,将PARTNERHOST1上的服务器实例设置为合作伙伴(使其成为初始主体服务器实例)。
ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://PARTNERHOST1.COM:7022' GO在PARTNERHOST1上的主体服务器实例上,将PARTNERHOST5上的服务器实例设置为伙伴(使其成为初始镜像服务器实例)。
ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://PARTNERHOST5.COM:7022' GO在主体服务器上,设置见证(其位于WITNESSHOST4上)。
ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://WITNESSHOST4.COM:7022' GO
相关任务
另请参阅
ALTER DATABASE (Transact-SQL)
数据库镜像端点 (SQL Server)
数据库镜像和 AlwaysOn 可用性组的传输安全性(SQL Server)
当数据库在其他服务器实例上可用时管理元数据 (SQL Server)
SQL Server 数据库引擎和 Azure SQL 数据库安全中心