You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Azure安全飞地问题:LIKE子句执行失败报错

Azure SQL安全飞地环境下LIKE查询报错解决方案

问题背景

  • 数据库版本:Microsoft SQL Azure (RTM) - 12.0.2000.8
  • 配置:已基于VBS(虚拟化基安全)配置安全飞地,通过Azure Key Vault创建列主密钥
  • 异常表现:插入、带WHERE子句的更新等操作均正常,仅使用LIKE操作符查询加密列时报错;DETERMINISTIC和RANDOMIZED两种加密类型均测试过,问题复现
  • 使用工具:SSMS 12.2

可正常执行的代码

EXEC sp_describe_parameter_encryption N'select * from test1 where gender like (@c1)', N'@c1 varchar(10)';

执行失败的代码

declare @c1 varchar(10)='%Male%'

select Name from test1 where gender like @c1

报错信息

An error occurred while executing batch. Error message is: Error occurred when reading 'sp_describe_parameter_encryption' resultset. Attestation URL has not been specified in the connection string, but the query requires enclave computations. Enclave type is 'Virtualization Base Security'.

原因分析

对加密列执行带通配符的LIKE模糊查询时,Azure SQL需要在安全飞地内完成加密数据的匹配计算。这种场景下,客户端必须通过指定飞地证明URL来验证飞地的合法性,否则会触发权限验证错误。而插入、精确匹配更新等操作无需飞地内的复杂计算,因此可以正常执行。

解决步骤

  1. 获取VBS安全飞地证明URL

    • Azure门户路径:进入目标Azure SQL数据库 → 数据安全 → Always Encrypted → 安全飞地,复制页面中的“证明URL”
    • Azure CLI命令(替换占位符):
      az sql server show -g <资源组名称> -n <SQL服务器名称> --query 'securityEnclaveAttestationUrl'
      
  2. 配置SSMS连接参数
    在SSMS连接数据库时:

    • 点击“选项” → 切换到“连接属性”标签页
    • 在“附加连接参数”输入框中添加:
      AttestationUrl=<你的飞地证明URL>
      

    示例:

    AttestationUrl=https://eus2.database.azure.com/attestation/v1
    
  3. 重新连接并测试查询
    保存连接设置后重新连接数据库,再次执行LIKE查询即可正常运行。

额外注意

  • SSMS 12.2已支持安全飞地证明参数,若仍有问题可尝试升级至最新版SSMS
  • 无论使用DETERMINISTIC还是RANDOMIZED加密类型,带通配符的LIKE查询都依赖飞地计算,必须指定证明URL

内容的提问来源于stack exchange,提问作者Ashish Singhal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:32:33