问题描述:在AWS Sql Express上备份数据库时,将备份文件上传到S3桶时出现错误。
错误消息示例: Msg 3201, Level 16, State 1, Line 10, Cannot open backup device 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\Backup\mydb.bak'. Operating system error 3(The system cannot find the path specified.).
确认S3存储桶的访问权限是否正确配置。确保当前访问密钥具有读写S3桶的权限。如果需要设置访问密钥,请在IAM中创建一个用户并获取其访问密钥。
确认SQL Server实例的服务账户是否有足够的权限访问备份文件和S3桶。为了解决此问题,请确保将正确的策略附加到服务账户。
请确保在备份脚本中指定正确的文件路径和命名约定。可以使用以下脚本进行备份:
BACKUP DATABASE mydb TO DISK='S3://mybucket/mydb.bak' WITH COMPRESSION, STATS=5;
其中,mybucket是您要备份到的S3 Bucket的名称。
SELECT @@SERVERNAME,
SSL_CertVerification
FROM sys.dm_exec_connections
CROSS APPLY sys.dm_exec_endpoint_url_enrichment (CONNECTION_ID())
WHERE protocol_desc = 'HTTP'
AND net_transport IN ('Internet','InternetProxy')
AND endpoint_url like '%s3.amazonaws.%';
检查此脚本的结果是否包含Bucket的正确Endpoint。
检查是否启用了S3 VPC Endpoint。S3的VPC Endpoint的目的是使通过VPC的实例可以更快地访问S3,同时仅在VPC中传输数据。这可以防止数据在Internet中传输时被拦截。如需启用,只需将S3 VPC Endpoint添加到VPC中即可。
最后,确保您的AWS SDK和SQL Server的版本兼容。如果使用的是更旧的AWS SDK,则无法访问S3 V4签名,这可能导致无法连接到S3。