Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 如何在镜像时解决sql server中的错误:1418_Sql Server 2008_Mirroring - Fatal编程技术网

Sql server 2008 如何在镜像时解决sql server中的错误:1418

Sql server 2008 如何在镜像时解决sql server中的错误:1418,sql-server-2008,mirroring,Sql Server 2008,Mirroring,我正在尝试在sql server中镜像数据库。我创建了一个数据库,对其进行了备份,并在另一台服务器上进行了恢复。但在完成所有操作并单击开始镜像后,它会显示以下错误。我对见证服务器选项设置了“否” 我遵循了本文中的镜像步骤,它说,在主体服务器和镜像服务器上创建一个具有步骤3中相同凭据的用户。是否需要在两台服务器上创建相同的用户?或者有其他解决办法吗?我也面临同样的问题。您需要检查以下项目一次 转到services.msc并检查sql server正在哪个帐户下运行。确保sql server和sql

我正在尝试在sql server中镜像数据库。我创建了一个数据库,对其进行了备份,并在另一台服务器上进行了恢复。但在完成所有操作并单击开始镜像后,它会显示以下错误。我对见证服务器选项设置了“否”


我遵循了本文中的镜像步骤,它说,在主体服务器和镜像服务器上创建一个具有步骤3中相同凭据的用户。是否需要在两台服务器上创建相同的用户?或者有其他解决办法吗?

我也面临同样的问题。您需要检查以下项目一次

  • 转到services.msc并检查sql server正在哪个帐户下运行。确保sql server和sql server代理服务应使用相同的凭据运行

  • 在镜像数据库服务器中,应执行与步骤1相同的步骤。提供与主体服务器中相同的凭据。如果该用户不存在,请使用相同的凭据在两台服务器上创建一个新用户

  • 现在已获得主体服务器,并在sql server中的安全-->登录下添加新登录名。将服务器角色指定为Sysadmin和public。在镜像服务器上也添加相同的用户

  • 现在在主体数据库中执行镜像。你没有在那里得到任何错误


  • 您也可能不会将用于镜像的副本保持在还原状态,而必须保持该状态才能启用镜像

    通常,SQL Server镜像的过程是:

    1) 备份原始数据库并将其复制到用于镜像的服务器

    2) 备份事务日志并将其复制到用于镜像的服务器

    3) 选择“从MMC还原数据库”,找到数据库的备份,并使用设置为保持非运行状态且不回滚事务的选项还原数据库

    4) 选择restore并选择files,然后选择log files并恢复日志文件备份,同时选择no rollback and non function。这是SQLServer2008上“选项”页面下的第二个单选按钮


    5) 转到原始数据库复制服务器并打开镜像。要启动镜像对话,您需要使用在两台服务器上都具有系统管理员权限的帐户。

    同样的问题,错误1418。这里有什么建议吗

    事后看来,这是显而易见的。完成镜像>配置安全向导时,您会看到一个页面,解释结果。查看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
    
    点击启动镜像,问题已解决

    希望这能帮助别人
    Scott

    我以前遇到过这个问题,所有的验证都通过了。 使用一个新的端点,它终于可以工作了。
    根本原因是5022可能会阻止其他会话。

    我的错误1418已通过在两台服务器上使用相同的驱动器号解决

    虽然MS建议你可以使用不同的字母,但我决定使用相同的字母

    来自MS:

    此外,如果可能,我们建议使用文件路径(包括 镜像数据库的驱动器号)必须与的路径相同 主体数据库。如果文件路径必须不同,例如 主体数据库位于驱动器“F:”上,但镜像系统缺少 F:drive,必须在RESTORE语句中包含MOVE选项


    在用尽了上面提到的所有选项之后,我对镜像环境进行了修改。我们的SQL server 2008在主体镜像配置中为2014服务器做出了贡献。2014年Sql server也被用于其他一些Db的HA的AlwaysOn配置中。现在,在sql 2008和sql 2014上,端点的命名有所不同

    在得到上述错误后,我发现2008年的加密是RC4,2014年的加密是AES。结果,它与SQL2014端点的握手失败。我使用下面的命令和viola更改了加密,使之与SQL 2008的加密相匹配

    ALTER ENDPOINT [Hadr_endpoint]
        FOR DATA_MIRRORING ( ENCRYPTION  = REQUIRED ALGORITHM RC4 )
    

    对我来说,我突然发现了这个问题,并通过删除和重新创建镜像端点(SSM->Server Objects->endpoints->Database mirroring)最终解决了这个问题。

    如果上述任何一项都不起作用,下面是导致我的问题的原因。 在两台服务器上运行以下查询并仔细查看

    SELECT @@Version
    
    我的主体服务器上有一些更新,但镜像服务器上没有安装这些更新


    此外,您还可以在SQL Server日志中查看其他信息,了解镜像无法工作的原因。这就是我如何意识到我在两台服务器上都有不同的版本。

    在SQL Server 2016上,解决方案是让您的[domain account]在主体服务器和镜像服务器上都作为系统管理员。然后创建一个新帐户,如下所示

    主服务器

    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
    
    您需要创建这些帐户并授予连接权限,因为这些帐户是主体服务器和镜像服务器之间握手期间使用的帐户

    有关错误的更多详细信息,请查看sql错误日志


    希望这篇文章能帮助别人。

    我也有同样的问题。我试图在Windows 2008-R2上的域设置上设置镜像。正如上面一位专家所建议的,我检查了SQLSERVER和SQLSERVERAGENT的SQLSERVER“登录”帐户,并在这两台机器上对SQLSERVER服务使用了相同的域帐户。我能够设置镜像


    谢谢你的帮助

    您在Principle和Mirror上说“确保sql server和sql server代理服务应使用相同的凭据运行”。我没有在Windows Active Directory域中运行。我的服务必须在本地用户帐户下运行。您的答案是假设用户是Active Directory用户吗?谢谢,在域帐户下运行SQL server已经为我解决了这个问题。本地帐户是否有负面影响?如果说相同的凭据,用户是否需要使用相同的密码?我尝试