使用Invoke-DbaDbLogShipping配置日志传送作业失败是什么原因
问题原因分析
你遇到的作业失败是两个独立问题共同导致的,对应报错信息中的两处错误提示:
1. SqlGuid转字符串类型报错(Failed to convert parameter value from a SqlGuid to a String)
这是Invoke-DbaDbLogShipping命令的已知兼容性问题,命令底层依赖的Microsoft.SqlServer.Management.LogShipping程序集版本和你当前使用的SQL Server实例版本不匹配,写入日志传送历史记录时,系统表字段的类型和写入值类型不兼容,导致历史记录写入失败,直接中断作业运行。
2. 无法打开备份设备报错
你使用了Windows用户个人目录(C:\Users\...\Documents)作为日志备份存储路径,SQL Server代理服务的运行账号默认没有个人用户目录的读写权限,备份作业运行时无法在目标路径下创建备份文件,直接触发备份失败。
解决步骤
- 修复类型转换问题:升级dbatools到最新正式版本,或者在执行
Invoke-DbaDbLogShipping时追加-NoHistory参数,跳过历史记录写入逻辑,直接规避类型转换错误。 - 修复路径权限问题:
- 不要使用个人用户目录作为备份存储路径,建议在非系统盘创建专用目录,例如
D:\LogShipping\Backups - 给主实例、辅助实例的SQL Server代理服务账号,分别授予备份本地路径、共享路径、副本存储路径的完全控制权限,共享路径需要同时配置共享权限和NTFS权限
- 不要使用个人用户目录作为备份存储路径,建议在非系统盘创建专用目录,例如
- 删除之前生成的失效日志传送作业,重新执行配置脚本即可正常运行。
内容的提问来源于stack exchange,提问作者Cataster
相关产品推荐
相关产品推荐

