使用SQL Server 2022的OPENROWSET查询Amazon S3文件报错排查
问题定位与解决方法
核心问题:外部数据源LOCATION格式错误
你的CREATE EXTERNAL DATA SOURCE语句中,LOCATION的写法不符合SQL Server对接Amazon S3的规范。SQL Server要求S3数据源的LOCATION直接使用s3://<bucket-name>格式,无需额外拼接s3.amazonaws.com域名。
修正后的SQL代码
CREATE DATABASE SCOPED CREDENTIAL s3_dc WITH IDENTITY = 'S3 Access Key', SECRET = 'AccessKey:SecretKey'; CREATE EXTERNAL DATA SOURCE s3_ds WITH ( LOCATION = 's3://sqlexternaltabletest' , CREDENTIAL = s3_dc ); GO SELECT * FROM OPENROWSET ( BULK '/parquet_folder/1936a792b4f94a9283e8f22354171fd7-0.parquet' , FORMAT = 'PARQUET' , DATA_SOURCE = 's3_ds' ) AS [cc];
额外验证要点
- 确认密钥权限:确保你的AWS Access Key拥有该S3存储桶的
s3:GetObject权限(上传操作仅需要s3:PutObject,查询需要读取权限) - 核对文件路径:BULK子句中的路径是相对于数据源LOCATION的,当前写法
/parquet_folder/xxx.parquet是正确的,对应S3上的s3://sqlexternaltabletest/parquet_folder/xxx.parquet路径
内容的提问来源于stack exchange,提问作者Vercinegetorix
相关产品推荐
相关产品推荐

