【发布时间】:2019-09-01 09:23:25
【问题描述】:
我在本地数据库中探索 SQL Server 2016 中的始终加密功能。在我们的项目中,我们在存储过程、作业等中广泛使用临时表。
但是当我尝试将 Always Encrypted 列插入临时表时,我不允许这样做。
在进一步的研究中,我发现在主数据库中使用的 CMK、CEK 也应该在 tempdb 中使用。所以我在临时数据库中使用“create”语句创建了相同的 CMK、CEK。
但问题仍然存在,这不允许我将主表中的 AE 列数据插入临时表,该临时表也使用相同的密钥进行加密。
获取错误:Operand type clash: nvarchar(50) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'testDB') is incompatible with nvarchar(50) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'tempdb')
非常感谢任何帮助解决此问题。
【问题讨论】:
-
可能需要重新启动/sql 服务重新启动 - 许多临时数据库属性仅在每次服务重新启动时首次创建临时数据库时应用。
-
@SqlSurfer :重启sql服务后测试相同。仍然没有运气。获取
Operand type clash: nvarchar(50) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'testDB') is incompatible with nvarchar(50) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'tempdb')错误
标签: sql-server temp-tables always-encrypted