![](/img/trans.png)
[英]Why can't I use `allAuthenticatedUsers` for my Firebase Cloud Function?
[英]Why can't I use the ISNULL function on a column that is encrypted?
我正在使用“始终使用 Secure Enclaves 加密”。 我创建了一个允许 null 的加密列:
MiddleName NVARCHAR(512) COLLATE Latin1_General_BIN2 ENCRYPTED
WITH (COLUMN_ENCRYPTION_KEY = [CEK_Loyal],
ENCRYPTION_TYPE = Randomized,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL
在 SSMS 中,我检查了“启用始终加密”并在连接对话框中提供了一个证明 URL。 我还确保在查询选项中设置了“为 Always Encrypted 启用参数化”。 当我运行以下查询时,出现错误:
Select ISNULL(MiddleName, '') from TheTable
错误:
Operand type clash: varchar is incompatible with nvarchar(512) encrypted with
(encryption_type = 'RANDOMIZED',
encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',
column_encryption_key_name = '{keyname}',
column_encryption_key_database_name = '{database}')
定义计算列的表达式无法使用随机加密对启用 enclave 的列执行任何计算
我了解计算列所涉及的开销,但在“ISNULL”的情况下,即使您连接到数据库时未指定“始终加密”(您只能看到加密值),列中的值为 null总是 null,解密与否。 目前,为了使我的应用程序可用,我需要将所有加密列声明为“非空”。 虽然这似乎是一个小问题,但这只是我们允许 null 的众多字段之一,当我们想要从其他来源导入数据时,导入器将需要在字段不存在的地方添加一个空字符串在源数据中。 虽然我们可以记录这种必要性,但我可以很好地想象创建进口商的人在发现时会翻白眼。
另一方面,要求“不为空”将使比较操作更容易一些。
感谢Martin Smith和sartoris发布您的讨论作为帮助其他社区成员的答案。
单列不能有一些带有
plain text
的行和一些带有always encrypted values
的行同样适用于结果集。具有可以是非加密纯文本或加密二进制的表达式
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.