我已经在 SQL Server 2022 中成功设置了始终使用安全飞地进行加密(无需证明)。然后我用这段代码创建表。
CREATE TABLE dbo.tbTesting (
idData INT PRIMARY KEY,
descData VARCHAR(200),
inputTime DATETIME DEFAULT GETDATE()
);
GO
表创建成功。然后我使用 SSMS 加密 descData 列(右键单击表,然后加密列)。加密类型是随机的。加密密钥已启用 enclave。该列也已成功加密。
但是问题是 idData 列中的主键丢失了,并且 inputTime 列中的默认约束也丢失了。
我必须重新创建主键和默认约束。
ALTER TABLE dbo.tbTesting ADD PRIMARY KEY (idData);
ALTER TABLE dbo.tbTesting ADD CONSTRAINT dtInputTime DEFAULT GETDATE() FOR inputTime;
这是始终加密的正常效果还是错误? 或者我不知道总是加密的事情?
我用
Microsoft SQL Server 2022 (RTM) - 16.0.1000.6 (X64) 2022 年 10 月 8 日 05:58:25 版权所有 (C) 2022 Microsoft Corporation 开发者版 (64 位)Windows 10 家庭版单语言 10.0(内部版本 19045:) (管理程序)
我的SSMS版本是19.1.56.0
这是向导中的问题。我已要求工程人员调查这个问题。
解决方法确实是重新创建主键和默认约束或使用 T-SQL
ALTER TABLE dbo.tbTesting
ALTER COLUMN [descData] VARCHAR(200) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL;
GO