SQL Server 2022中CETAS操作权限错误排查求助
排查SQL Server 2022 CETAS权限问题
一、SAS方式报错:CREATE/WRITE权限检查失败(HRESULT=0x80070005)
针对权限拒绝错误,按以下步骤排查:
修正SAS Token格式
创建数据库范围凭据时,SAS Token的SECRET不能包含开头的?,需从sv=开始。你的代码中SECRET以?开头,会导致验证失败,修正后示例:CREATE DATABASE SCOPED CREDENTIAL [BlobSAS] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'sv=2021-06-08&ss=bfqt&srt=c<<>>'; -- 去掉开头的?验证SAS权限与范围
- 确认SAS的
sp参数包含c(创建)和w(写入)权限,完整权限应为rwdlac; - 检查SAS的资源范围是否覆盖目标容器
dummy,如果是容器级SAS,需确保生成时选择了正确的容器; - 核对SAS的有效期,确认当前时间在SAS的起始和结束时间范围内。
- 确认SAS的
检查存储账户配置
- 确认
dummy容器已在存储账户中创建,CETAS不会自动创建容器; - 如果存储账户启用了防火墙,需将SQL Server所在服务器的IP添加到存储账户的允许列表中;
- 注意Blob存储路径大小写敏感,确认
LOCATION中的容器名、路径/Test拼写与实际完全一致。
- 确认
二、存储账户密钥方式报错:找不到凭据BlobKey(Msg 15151)
针对这个问题,按以下步骤排查:
确认凭据的数据库归属
数据库范围凭据是数据库级对象,需确保BlobKey是在执行CETAS的当前数据库中创建的,而非其他数据库。执行以下语句验证:-- 在当前数据库执行 SELECT name FROM sys.database_scoped_credentials WHERE name = 'BlobKey';如果结果为空,需重新在当前数据库创建凭据。
核对凭据参数正确性
IDENTITY必须是存储账户的纯名称(不含.blob.core.windows.net后缀),示例:CREATE DATABASE SCOPED CREDENTIAL [BlobKey] WITH IDENTITY = 'mystorageaccount', -- 替换为你的存储账户名 SECRET = 'your-storage-account-primary-key';- 确认SECRET是存储账户的主密钥或辅助密钥,无多余空格或字符错误。
验证权限与名称拼写
- 即使是sysadmin账户,也需确保对
BlobKey凭据有CONTROL权限,可执行以下语句授权:GRANT CONTROL ON DATABASE SCOPED CREDENTIAL::BlobKey TO [YourAdminUser]; - 检查外部数据源创建语句中,
CREDENTIAL = [BlobKey]的名称拼写是否完全正确(注意数据库 collation是否区分大小写)。
- 即使是sysadmin账户,也需确保对
内容的提问来源于stack exchange,提问作者Nandan
相关产品推荐
相关产品推荐

