应用始终加密后主键和默认约束丢失

问题描述 投票:0回答:1

我已经在 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

sql-server encryption primary-key always-encrypted sql-server-2022
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.