SQL Server 2022使用S3连接器备份数据库时触发操作系统错误87(参数不正确)
SQL Server 2022使用S3连接器备份数据库时触发操作系统错误87(参数不正确)
问题描述
我最近在尝试用SQL Server 2022新出的S3连接器把数据库备份到S3存储桶里,照着步骤创建好凭据后,执行了下面的备份命令:
BACKUP DATABASE database TO URL = 's3://bucket.s3-us-west-2.amazonaws.com/backups/database.bak' WITH FORMAT ,STATS = 10 ,COMPRESSION;
结果直接报错了,折腾了好一阵都没搞定:
Msg 3201, Level 16, State 1, Line 1
Cannot open backup device 's3://bucket.s3-us-west-2.amazonaws.com/backups/database.bak'. Operating system error 87(The parameter is incorrect.).
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.
解决办法
兄弟,我之前也踩过这个一模一样的坑!问题根源出在你写的S3 URL格式上,SQL Server 2022的S3连接器不支持这种带完整存储桶域名的写法,得改成简化格式才行。
你把备份命令里的URL改成下面这样就可以了:
BACKUP DATABASE database TO URL = 's3://bucket/backups/database.bak' WITH FORMAT ,STATS = 10 ,COMPRESSION;
额外排查提示
- 确认你创建的凭据里已经正确配置了
s3-us-west-2.amazonaws.com这个端点,并且对应的Access Key和Secret Key有该S3存储桶的读写权限 - 检查存储桶名称有没有特殊字符,路径里的
backups文件夹是否存在(不过这个错误主要还是URL格式的问题) - 要是用的是兼容S3的第三方存储服务,同样要遵循「存储桶名+相对路径」的URL格式,别带完整域名
备注:内容来源于stack exchange,提问作者atariguy
相关产品推荐
相关产品推荐

