数据库恢复时TLS连接请求失败:服务器证书名称不匹配
检查目标SQL Server的证书配置
新机器连接的SQL Server绑定的TLS证书,得确认它的主体名称或者SAN扩展里有没有包含svr-mssql。打开SQL Server配置管理器,找到对应实例的TCP/IP协议属性,切换到证书选项卡查看详情。如果证书名称不对,要么换个带正确名称的证书,要么重新申请符合要求的证书。确认服务器名称解析正确性
在新机器上跑ping svr-mssql和nslookup svr-mssql,看看解析出的IP和旧机器是不是一致。要是解析有问题,可能是DNS配置不一样,要么改本地hosts文件把svr-mssql指向正确IP,要么调整DNS服务器的记录。修改脚本的连接参数
如果证书里确实没有svr-mssql这个名称,但目标服务器有其他有效标识(比如实际主机名、IP),可以试试把脚本里New-DbaDatabase命令的-SqlInstance参数改成证书包含的名称或者IP,同时确保SQL Server允许这个标识的连接。排查新机器的TLS验证策略
新机器可能启用了更严格的TLS证书验证规则,而旧机器的规则比较松。可以去组策略里查:计算机配置→管理模板→网络→SSL配置设置,看看有没有强制证书名称匹配的选项,临时改成宽松模式测试能不能解决(测试完记得改回去,优先通过证书或名称修正来解决问题)。验证SPN注册情况
错误里的target principal name is incorrect大概率和SPN有关。在域控制器上运行setspn -L svr-mssql,看看有没有正确注册MSSQLSvc类的SPN。要是缺了,就用setspn -A MSSQLSvc/svr-mssql:1433 域\SQL服务账户来注册(替换成实际的端口和SQL服务账户)。
内容的提问来源于stack exchange,提问作者BlueStar

