通过PowerShell上传至S3失效求助(原正常运行)
自动化SQL备份迁移作业失效排查求助
过去几年我们一直稳定运行着一套自动化SQL作业,靠PowerShell脚本把数据库备份文件同步到S3和其他AWS服务上。但最近这作业突然掉链子了,我们折腾了好一阵也没揪出问题所在,来求助下大家!
先给大家说下作业的核心步骤:
- 步骤1:将数据库备份到指定的本地备份驱动器
- 步骤2、步骤3:针对每个数据库分别执行后续的迁移处理操作
目前作业抛出的报错信息如下:
作业脚本遇到以下错误,但未终止脚本:作业步骤收到……(注:原提问中报错内容未完整给出)
作为经常处理这类问题的开发者,我给你列几个优先级较高的排查方向,你可以挨个试:
- AWS权限是重灾区:突然失效大概率和权限变动有关,比如IAM角色权限过期、S3桶的访问政策被修改,或者脚本里用的AWS凭证(比如Access Key)失效了。建议先手动用同样的凭证上传测试文件到目标S3桶,验证权限是否正常。
- 先确认备份文件本身没问题:步骤1生成的备份文件会不会有问题?比如备份不完整、SQL服务账户没有读取该文件的权限?你可以手动检查备份文件的大小是否符合预期,或者用SQL的
RESTORE VERIFYONLY FROM DISK = '备份文件路径'命令验证备份有效性。 - 检查PowerShell脚本的依赖环境:比如服务器上的AWS Tools for PowerShell是不是被自动更新了?脚本里引用的模块路径有没有变动?或者服务器的PowerShell/.NET版本升级导致兼容问题?直接手动在服务器上运行一遍脚本,大概率能得到更详细的错误堆栈。
- 深挖日志细节:别只看SQL作业的表层报错,去翻SQL Agent的详细日志(路径一般是
C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Log),还有Windows事件日志里的应用程序日志、系统日志,说不定能找到权限不足、网络连接失败这类关键线索。 - 验证网络连通性:服务器到S3的网络是不是被阻断了?比如防火墙规则变更、代理设置修改?可以用PowerShell命令
Test-NetConnection -ComputerName s3.amazonaws.com -Port 443测试连通性。
内容的提问来源于stack exchange,提问作者Ryan Ternier
相关产品推荐
相关产品推荐

