我正在尝试在 sql server 中镜像数据库。我创建了一个数据库并对其进行了备份并在另一台服务器上恢复。但是在完成所有操作并单击开始镜像后,它会显示以下错误。我在见证服务器选项中输入了“否” 。
我按照此链接中的镜像步骤操作 这里说,在主服务器和镜像服务器上创建一个用户,在步骤 3 中使用相同的凭据。是否有必要在两台服务器上创建相同的用户?或有任何替代解决方案吗?
我正在尝试在 sql server 中镜像数据库。我创建了一个数据库并对其进行了备份并在另一台服务器上恢复。但是在完成所有操作并单击开始镜像后,它会显示以下错误。我在见证服务器选项中输入了“否” 。
我按照此链接中的镜像步骤操作 这里说,在主服务器和镜像服务器上创建一个用户,在步骤 3 中使用相同的凭据。是否有必要在两台服务器上创建相同的用户?或有任何替代解决方案吗?
我也面临同样的问题。您需要检查以下项目一次。
转到 services.msc 并检查 sql server 在哪个帐户下运行。确保 sql server 和 sql server 代理服务应该使用相同的凭据运行。
在镜像数据库服务器中,您应该执行与步骤 1 相同的步骤。提供与主体服务器中相同的凭据。如果该用户不存在,则使用相同的凭据在两台服务器上创建一个新用户。
现在得到主体服务器并在 sql server 中添加新的登录名Security-->Login。将服务器角色指定为 Sysadmin 和 public。在镜像服务器上也添加相同的用户。
现在在主体数据库中做镜像。你在那里没有得到任何错误。
同样的问题,错误 1418。这里是否建议了所有内容:链接
事后看来,这很明显。完成 MIRRORING > CONFIGURE SECURITY WIZARD 后,您会看到一个解释结果的页面。查看 SQL1 和 SQL2 节点,这一行是关键:
On the principal server instance, SQL1
Listener Port: 5022
Encryption: **Yes**
On the mirror server instance, SQL2
Listener Port: 5022
Encryption: **No**
解决方案。在所有 SQL 节点上完成向导后,执行:
drop endpoint Mirroring
go
CREATE ENDPOINT Mirroring
STATE = STARTED
AS TCP ( LISTENER_PORT = 5022 )
FOR DATABASE_MIRRORING
(ENCRYPTION = DISABLED,ROLE=ALL)
GO
点击开始镜像,问题解决。
希望能帮助某人斯科特
在用尽上述所有选项后,我对镜像环境进行了更改。我们有一个 SQL Server 2008 为 2014 Server 的 Principal-Mirror 配置做出贡献。2014 Sql 服务器也在 AlwaysOn 配置中用于其他一些 Db 的 HA。端点现在在 sql 2008 和 sql 2014 上以不同的方式命名。
得到上述错误后,我发现 2008 的加密是 RC4,而 2014 的加密是 AES。结果,它与 SQL2014 端点的握手失败。我使用以下命令和中提琴更改了加密以匹配 SQL 2008 的加密!
ALTER ENDPOINT [Hadr_endpoint]
FOR DATA_MIRRORING ( ENCRYPTION = REQUIRED ALGORITHM RC4 )
您也可能不会将用于镜像的副本置于恢复状态,必须将其保留以打开镜像。
通常,SQL Server 镜像的过程是:
1)备份原始数据库并将其复制到用于镜像的服务器。
2)备份事务日志并将其复制到用于镜像的服务器。
3) 从 MMC 中选择恢复数据库并找到数据库的备份并使用设置为保持非功能状态且不回滚事务的选项来恢复它。
4)选择恢复并选择文件,然后选择日志文件并恢复日志文件备份,也可以选择不回滚和不起作用。它是 sql server 2008 选项页面下的第二个单选按钮。
5) 到原数据库复制服务器,开启镜像。您需要使用在两台服务器上都具有系统管理员权限的帐户才能启动镜像对话。
我之前遇到过这个问题,所有的验证都通过了。最后使用一个新的端点,它可以工作。根本原因是 5022 可能会阻止其他会话。
通过在两台服务器上使用相同的驱动器号解决了我的错误 1418...
尽管 MS 建议您可以使用不同的字母,但我还是决定使用相同的驱动器字母...
来自女士:
此外,如果可能,我们建议镜像数据库的文件路径(包括驱动器号)与主体数据库的路径相同。如果文件路径必须不同,例如,如果主体数据库位于驱动器“F:”但镜像系统缺少 F: 驱动器,则必须在 RESTORE 语句中包含 MOVE 选项。
对我来说,我遇到了这个问题,并通过删除和重新创建镜像端点(SSMS -> 服务器对象 -> 端点 -> 数据库镜像)最终解决了这个问题
如果上述方法都不起作用,这就是导致我的问题的原因。在两台服务器上运行以下查询并仔细查看
SELECT @@Version
我的主服务器上有一些更新,但我的镜像服务器上没有安装。
此外,您可以在 SQL Server 日志中查看有关镜像不起作用的原因的其他信息。这就是我意识到我在两台服务器上都有不同版本的方式。
在 SQL Server 2016 上,解决方案是让您的 [域帐户] 作为主体服务器和镜像服务器上的系统管理员。然后创建一个新帐户如下
主服务器
use [master]
GO
CREATE LOGIN [domain\mirrorservername$] FROM WINDOWS
GO
GRANT CONNECT ON ENDPOINT::[Mirroring] TO [domain\mirrorservername$]
GO
镜像服务器
use [master]
GO
CREATE LOGIN [domain\principalservername$] FROM WINDOWS
GO
GRANT CONNECT ON ENDPOINT::[Mirroring] TO [domain\principalservername$]
GO
您需要创建这些帐户并授予 CONNECT 权限,因为这些帐户是主体和镜像服务器之间握手期间使用的帐户。
有关错误的更多详细信息,请检查您的 sql 错误日志。
希望这篇文章对某人有所帮助。
我遇到过同样的问题。我试图在 Windows 2008 - R2 上的域设置上设置镜像。正如上面一位专家所建议的那样,我检查了 SQLSERVER 和 SQLSERVERAGENT 的 SQL Server“登录”帐户,并为两台机器上的 SQL Server 服务使用了相同的域帐户。我能够设置镜像。
谢谢您的帮助!