You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Invoke-DbaDbLogShipping配置日志传送报ExecuteWithResults异常如何解决

异常根因说明

第一层的ExecutionFailureException是核心错误,本质是命令执行过程中调用的T-SQL批量语句执行失败,导致返回的结果集为空;第二层的NullArray错误是连锁问题,因为$batchresult为空,调用其Tables.rows属性时触发空引用报错。
常见触发核心错误的原因如下:

  • 权限不符合要求:运行PowerShell的账号对源、目标SQL实例没有sysadmin权限;PowerShell运行账号、源/目标SQL Server服务账号对备份网络路径\\sql1\logshipping、本地备份路径均没有读写权限。
  • 路径配置问题:\\sql1\logshipping网络路径不可达、共享权限未开放;本地备份路径包含特殊字符或空格未正确解析,或者路径不存在。
  • 数据库属性不满足要求:源库Test为简单恢复模式,日志传送要求必须为完整/大容量日志恢复模式;源库已有残留的日志传送配置,目标实例已存在同名的在线Test库引发冲突。
  • 实例连接异常:目标实例localhost\MSSQLSERVER01未开启TCP/IP协议、SQL浏览器服务未启动,导致连接失败。
  • 工具版本bug:你使用的dbatools 1.0.173属于老旧版本,存在已知的日志传送配置逻辑缺陷。

排查处理方案

  • 确认源库恢复模式:在源SQL实例执行如下语句校验
SELECT name, recovery_model_desc FROM sys.databases WHERE name = N'Test'

如果返回SIMPLE,执行如下语句修改恢复模式:

ALTER DATABASE Test SET RECOVERY FULL WITH NO_WAIT
  • 验证权限配置:确认PowerShell运行账号、源和目标SQL Server服务账号对两个备份路径都有完全控制权限,且三个账号在两个SQL实例中都属于sysadmin角色。
  • 校验路径可用性:手动访问\\sql1\logshipping确认可以正常读写文件,本地备份路径建议更换为无空格、无特殊字符的路径测试,比如C:\LogShippingBackups。
  • 清理历史残留配置:手动删除源库原有日志传送配置,目标实例如果已存在Test库,先删除或者设置为还原状态。
  • 升级dbatools到最新稳定版:执行如下命令更新工具版本,修复已知bug
Update-Module dbatools -Force
  • 定位具体错误点:执行命令前先开启调试模式,输出完整的报错信息:
$DebugPreference = 'Continue'
Invoke-DbaDbLogShipping @params -Verbose

可以直接打印出执行失败的具体T-SQL语句,快速定位问题。

内容的提问来源于stack exchange,提问作者Cataster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 09:36:04