使用脚本加密现有列(始终加密)

时间:2019-01-10 09:47:24

标签: sql-server encryption always-encrypted

我需要使用列加密密钥“ MyCEK”使用“始终加密”(确定性)对名称列进行加密。

我不想通过向导完成此操作,但是我需要为其编写脚本,以便可以在多台服务器上运行(针对DEV,TEST,PROD等不同环境)。

我已经有了用于密钥创建的脚本。

ALTER TABLE MyTable
ALTER COLUMN [Name] [varchar](200) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [MyCEK], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL

只想知道我是否可以使用这样的表来更改表 它给出了一个错误:

  

操作符类型冲突:nvarchar(max)使用(encryption_type ='DETERMINISTIC',加密算法名称=   'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name =   'TwoValueCE',column_encryption_key_database_name ='EmpData2')是   与使用(encryption_type =   'DETERMINISTIC',encryption_algorithm_name =   'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name =   'TwoValueCE',column_encryption_key_database_name ='EmpData2')   collat​​ion_name ='Latin1_General_BIN2'

1 个答案:

答案 0 :(得分:0)

看看您是否可以DROPCREATE该表,我运行脚本来创建带有加密列的新表,而不会出现问题,例如

CREATE TABLE [dbo].[Table1](
[ScannedInput] [varchar](50) COLLATE Latin1_General_BIN2 ENCRYPTED WITH 
(COLUMN_ENCRYPTION_KEY = [CEK_Auto2], ENCRYPTION_TYPE = Deterministic, ALGORITHM 
= 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL,