你好,
我正在尝试使用主服务器、镜像服务器和见证服务器来镜像数据库。每台计算机都有自己的本地 IP 地址 (v4),我将它们设为静态,这样它们就不会改变。
然后我读了一些资料并按照如何备份和恢复测试数据库的步骤进行操作,然后使用镜像配置安全向导,我能够使用 SQL Server 身份验证而不是 Windows 身份验证连接到每个服务器,然后我收到成功消息,然后单击关闭并开始镜像,但随后收到错误#1418 网络地址:“TCP://BAKSRV:5022”无法访问或不存在,然后我更改了网络地址以查看它是否将使用 IPv4 连接并输入以下信息。进入服务器网络地址:
主体:TCP://10.1.10.1:5022 镜像:TCP://10.1.10.2:5022 见证:TCP://10.1.10.3:5022
我也尝试使用他们的计算机名称,但仍然出现相同的错误
错误#1418 网络地址:“TCP://10.1.10.2:5022”无法访问或不存在
在 Mirror Comp 上。我进入 cmd 并执行 netstat -a,我多次看到这个:
TCP ---- 10.1.10.2:5022 ------- Main-PC:diffrent port numbers ---- TIME_WAIT
我也禁用了镜像计算机上的防火墙以排除这个可能性,但仍然无法启动镜像。
所有 Comps 都运行 MS SQL 2012,并且我正在使用具有两个文件的 TestDB 来对其进行测试/运行。
当我尝试这个时:SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints
我得到:
name role_desc state_desc
Mirroring PARTNER STARTED
当我尝试这个时:SELECT name, port FROM sys.tcp_endpoints
我得到:
name port
Dedicated Admin Connection 0
TSQL Default TCP 0
Mirroring 5022
附加信息。
当我进入 SQL Server 配置管理器并在“登录”下选择“SQL Server”时:选中此帐户,并且有一个帐户名称:.\BKAccount,并且密码也已填写。所有 3 个服务器都具有相同的设置,但它们都有不同的用户名/密码。我不知道这是否有帮助,但是当我在 SQL Management Studio 中时,我只能通过选择“身份验证:SQL Server 身份验证”来连接到镜像服务器和见证服务器,而不能通过选择 Windows 身份验证。
有人可以帮帮我吗我做错了什么以及我该如何让它工作....请帮帮忙!!!
再次感谢...
答案1
听起来你的端点可能有问题。
如果你还没有这样做,你需要确保你已正确配置端点并在两台服务器上启动它们。你可以通过运行以下命令来确认它们已存在:
SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints
如果您已经这样做了,我建议您删除并重新创建它们,然后尝试再次连接。执行此操作的步骤在在线书籍中: http://technet.microsoft.com/en-us/library/ms190456.aspx
更新:
根据您上面的评论,您正在使用 SQL 身份验证连接到实例。并且服务器实例在本地(非域)帐户下运行。为了使其正常工作,您必须使用证书进行端点身份验证。并且要将证书用于数据库镜像端点,您的系统管理员必须将每个服务器实例配置为在出站和入站连接上使用证书。
不幸的是,没有使用证书自动配置数据库镜像安全性的方法。因此,一旦配置了证书,您就必须使用 CREATE ENDPOINT 手动创建端点。请参阅:确定数据库镜像端点的身份验证类型
由于您已经表示遇到困难,因此使用 Windows 身份验证可能会更方便。以下是涉及内容的基本概述:
- 确保 SQL 实例已配置为混合模式身份验证
您需要创建要使用的适当域登录。每:数据库镜像和 AlwaysOn 可用性组的传输安全 (SQL Server)
在 Windows 身份验证下,每个服务器实例使用运行该进程的 Windows 用户帐户的 Windows 凭据登录到另一端。Windows 身份验证可能需要手动配置登录帐户,如下所示:
- 如果 SQL Server 实例作为服务在同一个域帐户下运行,则不需要额外的配置。
- 如果 SQL Server 实例作为服务在不同的域帐户下运行(在相同或受信任的域中),则必须在每个其他服务器实例上的 master 中创建每个帐户的登录名,并且必须授予该登录名在端点上的 CONNECT 权限。
- 如果 SQL Server 实例以网络服务帐户运行,则必须在其他每台服务器的 master 中创建每个主机帐户 (DomainName\ComputerName$) 的登录名,并且必须授予该登录名在端点上的 CONNECT 权限。这是因为在网络服务帐户下运行的服务器实例使用主机的域帐户进行身份验证。
根据您上面配置的 SQL Server 服务,您可能需要设置登录账户
我知道这里面有很多信息;一旦你搞定了身份验证,你就应该能够使用 GUI 来实现这一点。在线书籍中还有一个非常有用的示例,其中包含了执行此操作所需的所有 TSQL。一旦你设置了身份验证,你几乎可以使用示例代码来进行设置。 示例:使用 Windows 身份验证 (Transact-SQL) 设置数据库镜像