SQL Server 2019 PolyBase创建外部数据源报URI不支持错误求助
解决SQL Server创建Azure Blob外部数据源的105080错误
错误原因
你的LOCATION URI格式不符合SQL Server PolyBase的要求,存在多余路径或格式错误。
正确配置步骤
1. 确认数据库范围凭据有效性
确保凭据创建语句符合对应认证方式的要求:
- 使用SAS令牌认证:
CREATE DATABASE SCOPED CREDENTIAL BlobStorageCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<你的SAS令牌(需去掉开头的?)>'
- 使用存储账户密钥认证:
CREATE DATABASE SCOPED CREDENTIAL BlobStorageCredential WITH IDENTITY = '<存储账户名>', SECRET = '<你的存储账户访问密钥>'
2. 正确的外部数据源创建语句
LOCATION必须严格遵循abs://<容器名>@<存储账户名>.blob.core.windows.net格式,不要在末尾加斜杠,也不要在域名后直接追加子路径:
CREATE EXTERNAL DATA SOURCE [Blob_CSV] WITH ( LOCATION = N'abs://polybase@scottpolybasestorage.blob.core.windows.net', CREDENTIAL = [BlobStorageCredential] )
3. 子路径的处理
如果需要指向容器下的特定子目录,不要在外部数据源的LOCATION中指定,而是在创建外部表时,通过表的LOCATION参数指定子路径:
CREATE EXTERNAL TABLE [dbo].[YourExternalTable] ( -- 替换为你的列定义 Id INT, Name VARCHAR(50) ) WITH ( LOCATION = N'polybase/subfolder/', -- 此处指定容器下的子路径 DATA_SOURCE = [Blob_CSV], FILE_FORMAT = [YourFileFormat] -- 需提前创建对应的文件格式对象 )
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

